在对象内部的成员变量和成员函数分开储存; 而同一类的不同对象则公用一部分储存非静态成员函数; 这时可以使用this指针加以区分; this所指的是被调用的函数的所属对象,无需定义可以直接使用; 1.当函数形参和成员变量同名时,成员变量前加this指针加以区分; 2.使用非静态成员函数的return返回对象本身时,返回的是对象的值传递,不是对象本身,如使用return*this。 即可返回对象本身,方便后续对对象的进一步操作。
其实在成员函数调用成员属性过程中,前面都隐藏了this指针。如果this指针为空,调用了成员属性的函数就不能定位属性的值,就会报错;而如果成员函数未调用属性,则即便this指针为空,依然可以正常运行。 this指针是一个指针常量(classname *const this),指向地址不可以修改,但是指向内容可以修改; 成员函数后加const以后(int pass()const{})我们称之为常函数,(此时this指针变成const classname *const this)不可以修改成员属性,除非成员属性声明时有关键字mutable; 在对象前加const则变为常对象,常对象不可以修改没有mutable声明的属性,但是可以访问;常对象只能调用常函数。因为常对象不允许修改属性,而普通函数有可能含有能修改属性的语句,就会产生冲突。