在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";
}
};
武器类是由炸弹类派生的,在其中调用了武器的成员函数。
为什么用“ this”指针调用Weapon :: features()函数?
答案 0 :(得分:4)
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
。