为什么“ this”指针用于调用派生成员函数?

时间:2018-11-06 09:34:21

标签: c++ this

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()函数?

1 个答案:

答案 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