<返回更多

C++this 指针与常函数

2019-06-05    
加入收藏

1 this 指针

1)类的成员函数包括构造函数,都有一个隐藏的该类类型的指针,名字为 this。

a. 对于普通成员函数,this 指针指向调用该函数的对象。

b. 对于构造函数,this 指针指向正在被构造的对象。

2)在成员函数或构造函数直接访问成员变量实际都是通过 this 指针完成的,一般 this 可以省略不写,也可以显示写出来。

3)需要显示使用 this 指针的场景

a. 区分作用域

b. 从成员函数中返回调用对象的自身 (自引用)

class A{
 A& fun(void){
 ...
 return *this;
 }
}
 
int main(){
 A a;
 a.func();
}

c. 从类的内部销毁对象自身(对象自毁)

class A{
 void destory(void){
 ...
 delete this; //对象自毁
 }
}
int main(){
 A* pa = new A;
 //delete pa;
}

d. 作为函数实参,把一个对象传递给另一个对象,实现对象的交互。

2 常函数

1)在一个普通的成员函数不包括构造函数后面加上 const 关键字,这个成员函数就称为常函数。

返回类型 函数名 (形参表) const {函数体}

2)const 实际修饰的就是成员函数里面隐藏参数 this 指针,常函数中的 this 是一个常指针,不能在常函数中修改成员变量的值。

3)一般如果一个函数不需要修改成员变量的值,就可以定义为常函数,防止意外修改成员变量。

4)被 mutable 关键字修饰的成员变量可以在常函数中修改。

5)非常对象既可以调用非常函数也可以调用常函数,但常对象只能调用常函数,不能调用非常函数。

6)函数名和形参表相同的成员函数,其常版本和非常版本可以构成有效的重载,常对象调用常版本,非常对象调用非常版本。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>