分类: C++

1 篇文章

剖析C++面试题:C++this指针干什么用的?
  开心一刻: 每当对象迷了路,this月老闪现出来说:"跟哥走"。 ---> 剧终     下面是一段最简单的代码: class Test { public: void func() { cout<<"mvalue:"<<mvalue<<endl; } private: int mvalue; }; int main() { Test t1,t2; t1.func(); t2.func(); return 0; }   一个Test类可以生成很多对象,每个对象都有自己的成员变量mvalue值,但是所有对象共享成员方法,比如这里的func成员函数,那么通过不同的对象t1和t2来调用同一个func方法,这个func方法怎么知道打印谁的mvalue值呢?对了,就是this指针的作用,看看调用具体是怎么发生的,如下: t1.func() ====> Test::func(&t1); t2.func() ====> Test::func(&t2);   通过t1和t2对象来调用成员方法func,实际在汇编上,是调用了类Test作用域下的func方法,把调用方法的对象当做实参传递进去了,那么既然编译器自己把对象的地址当做实参进行传递,相应的它就得加个形参来就收,因此,上面的代码经过编译器编译后,就编程这样了:   class Test { public: void func(Test *const this) { cout<<"mvalue:"<<mvalue<<endl; } pr…