关于this指针的理解
个人理解是:
1、在类的普通成员函数中隐含了this指针形参,如:point类中的普通成员函数move的真正原型是void move(point *this,int xx,int yy);而point类对象a在调用成员函数move时用 a.move(1,1);C++编译器自动把该语句转换成move(&a,1,1)。这样this指针就指向了对象a,成为了指向a的指针变量,所以this指针(应该是指针变量吧)就能够访问a中的数据成员及成员函数(含私有数据成员及成员函数)。按照这样的理解个人认为就不能直接说C++提供this指针指向对象自身。而是通过调用普通成员函数让this指向对象
2、而静态成员函数不同于普通成员函数,它没有this指针,可以通过“a.静态成员函数”的方式调用静态成员函数,但静态成员函数中不能访问a的普通数据成语及普通成员函数,一般用来访问静态数据成员。(以上的普通指的是非静态。)
以上是个人理解,有不正确的地方请各位批评指正!!谢谢!
[解决办法]
成员函数的调用翻译成C代码或者汇编代码确实是通过增加隐藏变量的方式来实现的。但是在C++的语义上this就是指向一个对象实例的指针,你返回一个this指针时不能说是通过调用普通成员函数让this指向对象吧。
[解决办法]
我觉得楼主可以看下《深入探索C++模型对象》,this指针在建立对象的时候便已经出来了,不需要等到调用什么函数的时候才出来。
[解决办法]
C++的this指针尤其对成员函数与友元函数运用于运算符重载时有很大的区别,具体可以查相关资料。