为什么使用 "this" 指针调用派生成员函数?

Why is the "this" pointer used to call derived member functions?

本文关键字:成员 派生 函数 调用 指针 this 为什么      更新时间:2023-10-16

在阅读有关此链接上的虚拟函数(与本例无关(的教程时,我发现了以下代码。

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