this指针是C++中隐含的指向调用对象的const指针,用于区分同名成员变量与参数、实现链式调用、判断对象自赋值等场景,仅在非静态成员函数中有效。

this 指针是 C++ 中一个非常重要的概念,它是一个隐含在每一个非静态成员函数中的指针,指向调用该成员函数的那个对象。简单来说,当你在一个类的成员函数中使用 this,它就代表当前对象的地址。
1. this 指针的基本概念
每个非静态成员函数(包括构造函数和析构函数)都会自动拥有一个名为 this 的指针。这个指针由编译器自动生成并传递,不需要程序员显式定义。
例如:
class MyClass {private:
int value;
public:
void setValue(int value) {
this->value = value; // 使用 this 区分成员变量和参数
}
};
在这个例子中,参数 value 和成员变量 value 同名。通过 this->value 可以明确指定访问的是当前对象的成员变量。
立即学习“C++免费学习笔记(深入)”;
2. this 指针的作用
this 指针主要有以下几个作用:
- 区分同名变量:当成员函数的参数与类的成员变量同名时,可以用 this-> 明确访问成员变量。
- 返回当前对象的引用:常用于实现链式调用。比如:
value += x;
return *this; // 返回当前对象的引用
}
这样就可以连续调用:
obj.add(1).add(2).add(3); // 链式操作- 在类内部进行自我判断或操作:比如判断两个对象是否为同一个实例:
return this == &other;
}
3. this 指针的特性
- this 是一个 const 指针,不能被修改,即你不能让 this 指向别的对象。
- this 只能在非静态成员函数中使用。静态函数不属于某个具体对象,因此没有 this 指针。
- this 指向的是调用成员函数的对象实例。
4. 实际应用场景举例
常见于运算符重载、赋值操作中防止自赋值:
MyClass& operator=(const MyClass& other) {if (this == &other) return *this; // 防止自赋值
value = other.value;
return *this;
}
如果没有 this 指针,这种判断将无法实现。
基本上就这些。this 指针虽然看不见,但一直在背后工作,理解它有助于写出更清晰、安全的 C++ 类代码。










