1.this指针
1)每个类的构造函数和成员函数中都包含一个隐藏的该类类型的指针参数,名为this,该指针指向调用这个成员函数或正在被构造的对象。成员函数和构造函数中对该类其它成员的访问,都是通过this指针进行的。this指针可以在成员函数或构造函数内部直接显式地引用。
2)显式使用this的场合
A.区分作用域
B.从类的内部向外部传递该类对象地址
C.从类的内部向外返回该类对象自身——返回自引用
D.从类的内部销毁该类对象自身——对象自毁
2.常函数
1)形如
返回类型 函数名 (形参表) const { 函数体 }
的成员函数,其中的this指针是一个常指针,因此不能该函数中修改成员变量的值,这样的成员函数叫做常函数。
2)被mutable关键字修饰的成员变量可以在常函数中被修改。
3)非常对象既可以调用非常函数,也可以调用常函数,但是常对象只能调用常函数,不能调用非常函数。
4)函数名和形参表相同的成员函数,其常版本和非常版本可以构成重载关系,常对象调用常版本,非常对象调用非常版本。如果没有非常版本,那么非常对象也能调用常版本。
5)一般情况下,如果一个成员函数不修改任何成员变量,那么最好将其声明为常函数。假如根据需求不得不对个别成员变量进行修改,则可以通过对this指针去常,或者为需要修改的成员变量加mutable关键字的方法进行处理。