目录
前言
this指针并不需要被定义,直接使用即可。在C++中成员变量和成员函数的存储是分开的。this指针的主要作用是指向被调用的非静态成员函数的所属对象。
一、this指针的使用
1.可以解决变量名冲突的问题。如以下代码所示:
class ex
{
public:
ex(int n)
{
this->n=n;
/*这里this指向的n与下方定义的成员变量是同一个n,后面的n与成员函数中传入的参数n是同一个n*/
}
int n;
};
此处this指针有效解决了一定情境下变量名冲突的问题。this指针指向被调用的成员函数所属的对象。
2.返回对象本身
class ex
{
public:
ex(int n)
{
this->n=n;
/*这里this指向的n与下方定义的成员变量是同一个n,后面的n与成员函数中传入的参数n是同一个n*/
}
ex& addm(ex& p)
{
this->n+=n;
return *this;//返回对象本身
}
int n;
};
void ez
{
ex p1(1);
ex p2(2);
p2.addm(p1).addm(p1); //持续调用,使p2的值一直加1;
}
返回对象本身以便持续调用。(又称为链式编程思想) 。
二、const修饰成员函数
常函数与常对象。两者均使用const修饰,但const的位置不同。代码示例如下:
class ex
{
public:
void ceshi()const //函数后接const变成常函数
{
//this->n=1;在常函数中这个变量不可以修改
this->m=1;//在常函数中前缀为mutable的变量可以修改
}
int n;
mutable int m;
};
void ceshi(){
const ex p;//常对象(在对象前面加const)
//p.n=2;
p.m=2;//之前前缀定义为mutable的变量也可以在此处修改
}
此外,常对象 只能调用常函数。若想修改成员属性,需要在成员属性前面加mutable关键字
总结
this指针可以解决变量名重复的问题,也可以使用this指针返回对象本身进行持续的调用。使用const可以定义常函数和常对象,如需在常函数或常对象中修改成员书信,可以在成员属性前面加mutable。