c++ - 不明白这个返回类型?

标签 c++ class inheritance

我正在阅读老师给我的一些代码,但我不太理解特定的一行代码。该函数返回一个 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 个元素。

关于c++ - 不明白这个返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58141053/

相关文章:

c++ - 寻找容器和内存池解决方案

c++ - 尝试在项目中使用 Google Protocol buffer c++ 链接错误

c++ - 无法将 valarray 初始化为类的私有(private)成员

inheritance - 使Maven聚合器pom将属性注入(inject)模块poms中的可行性(不使用继承)

c++ - 为什么我的子类被认为是抽象类?

c++ - C++中虚方法的误解

c++ - devkitPPC (Wii) 开发的不同语言

c# - 使用反射从静态类内部的静态类中获取所有字段

java - 如何在运行时从文件夹或 JAR 加载类?

c++ - 具有共享边界的最小连接区域的图论算法