为什么使用 "this" 指针调用派生成员函数?
Why is the "this" pointer used to call derived member functions?
在阅读有关此链接上的虚拟函数(与本例无关(的教程时,我发现了以下代码。
class Weapon
{
public:
void features()
{ cout << "Loading weapon features.n"; }
};
class Bomb : public Weapon
{
public:
void features()
{
this->Weapon::features();
cout << "Loading bomb features.n";
}
};
Weapon类是由Bomb类派生的,其中Weapon的成员函数被调用。
为什么用"this"指针调用函数Weapon::features((?这不是已经隐含了吗?
this
是隐式给定的,是否显式编写它通常是一个风格问题。在你的情况下,我想说它并不能提高可读性。
然而,在其他情况下,为了避免局部变量和数据成员之间的命名冲突,显式编写this
是有意义的,甚至是必要的。例如,考虑以下程序:
class SomeClass {
public:
void print(int amount) const {
cout << amount << endl;
}
int amount = 10;
};
int main() {
SomeClass c;
c.print(20);
}
输出是20
,如果要访问数据成员,就必须写入cout << this->amount << endl
。是的,也许风格不好。但在技术意义上,有时甚至需要明确的this
。
相关文章:
- 为什么使用 "this" 指针调用派生成员函数?
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 如何使用基类指针引用派生类成员
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 在 C++ 中用派生类型重写成员函数
- 如果基类包含双指针成员,则派生类的构造函数
- 在派生类中绑定非静态模板化成员函数
- 为什么派生类的好友不能使用受保护的成员?
- 在派生类中使用基类的私有成员变量的最佳方法
- 派生类如何获取基的成员?
- 如何将成员函数作为参数传递并在派生对象上执行方法列表
- 调用派生类成员函数
- 从模板化父类中的派生内部类访问受保护的成员变量
- 将基类的成员函数重载到其他派生类C++
- 派生的成员 通过指向基、static_cast、crtp、删除模板的指针
- C++ 使用派生类方法更改基类数据成员
- 派生类看不到基类成员
- 使用派生类中的静态成员而不是基类
- 是否可以使用 using 将基类中的公共成员重新声明为派生类中的私有成员?
- 如何将派生类中的成员函数作为回调传递?