首页 > 解决方案 > 不明白这个返回类型?

问题描述

我正在阅读老师给我的一些代码,但我不太理解某一行特定的代码。该函数返回一个 int&。

return (*(Vector *)this)[i];

此返回语句位于“[]”的运算符重载中。在“this”的基类中还定义了另一个 [] 运算符重载。基类是定义的类“Vector”。我不明白这行代码。

标签: c++classinheritance

解决方案


如有疑问,请简化。

第一步:

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对象的第 - 个元素。


推荐阅读