先贴上一段代码
class Alien { public: Alien(int age , string home) { _age = age; _home = home; } void say() { cout << "I'm alien" << " I come from " << _home << endl; cout << "I'm " << _age << "years old" << endl; } private: int _age; string _home; }; int main() { Alien a1(299, "M77"); Alien a2(128, "M78"); a1.say(); a2.say(); return 0; }上面的代码中有a1,a2两个对象,他们都调用say(),编译器怎么知道该输出谁的信息呢 C++中通过引入this指针解决该问题,即:C++编译器给每个“成员函数“增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有成员变量的操作,都是通过该指针去访问,只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。