c++ - 不明白这个返回类型?
问题描述
我正在阅读老师给我的一些代码,但我不太理解某一行特定的代码。该函数返回一个 int&。
return (*(Vector *)this)[i];
此返回语句位于“[]”的运算符重载中。在“this”的基类中还定义了另一个 [] 运算符重载。基类是定义的类“Vector”。我不明白这行代码。
解决方案
如有疑问,请简化。
第一步:
return (*(Vector *)this)[i];
可
Vector* ptr = (Vector*)this;
return (*ptr)[i];
第二步:
return (*ptr)[i];
可
Vector& ref = *ptr;
return ref[i];
两种简化放在一起,这条线
return (*(Vector *)this)[i];
相当于
Vector* ptr = (Vector*)this;
Vector& ref = *ptr;
return ref[i];
当成员函数是const
成员函数时,this
类型为Vector const* const
.
第一行删除const
了对象指针的 -ness。
第二行取消引用指针。
最后一行返回i
对象的第 - 个元素。