this 指针及其作用
this指针是类的非静态成员函数中,编译器隐式传入的一个指针,指向调用该成员函数的当前对象。
this指针只存在于非静态成员函数中,静态成员函数中没有this
它的作用主要有:
1. 区分成员变量和形参
当成员变量和函数参数同名时,可以用this明确表示当前对象的成员。
class A
{
public:
int x;
void setX(int x)
{
this->x = x;
}
};
2. 在成员函数中访问当前对象
this-member表示访问当前对象的成员。
3. 返回当前对象本身
常用于链式调用,如boost中的assign库的相关使用。
class A
{
public:
A& setX(int x)
{
this->x = x;
return *this;
}
private:
int x;
};
4. 判断是否自赋值
自赋值是指一个对象赋值给自己的情况,通常发生在赋值运算符operator=被调用时,左操作数和右操作数是同一个对象。
class A
{
A& operator=(const A& other)
{
// 判断是否自赋值
if (this == &other)
{
return *this;
}
/*
释放自己资源,分配新资源,复制数据
若不存在自赋值判断操作,会误释放自己的资源,触发错误
*/
return *this;
}
};
int main()
{
A a;
a = a; // 自赋值
return 0;
}
651



被折叠的 条评论
为什么被折叠?



