https://blog.csdn.net/zhangxiao93/article/details/50599104,这个讲的很好。
1.this指针本质
它是一个常量指针,只能指向一个对象,不能更改。
2.常量对象与常量函数之间
常量对象不能更改数据成员,this指针是指向常量的常量指针, 它不能调用非常量成员函数,是因为非常量指针不能指向常量对象。
这个举的例子就非常好:
int main() { //... A a1; const A a2; a1.func1(); //等价于a1.func1(&a1);//ok a1.func2(); //等价于a1.func2(&a1);//ok a2.func1(); //等价于a2.func1(&a2);//ok a2.func2(); //等价于a2.func2(&a2);//error }
主要就是从成员函数的第一个参数是this指针角度来考虑的。