gpt4 book ai didi

c++ - 为什么 "this"指针用于调用派生成员函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:49:59 25 4
gpt4 key购买 nike

this 上阅读关于虚函数的教程(与本例无关)链接,我找到了这段代码。

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有时甚至是必需的。

关于c++ - 为什么 "this"指针用于调用派生成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53169145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com