this
关键字的含义
在 C++ 中,this
是 指向当前对象的指针。它存在于所有非静态成员函数中,指向调用该成员函数的对象。
1. this
的基本概念
class MyClass {
public:
void show() {
std::cout << "Address of this object: " << this << std::endl;
}
};
- 1
- 2
- 3
- 4
- 5
- 6
int main() {
MyClass obj1, obj2;
obj1.show(); // 输出 obj1 的地址
obj2.show(); // 输出 obj2 的地址
}
- 1
- 2
- 3
- 4
- 5
- 6
✅ 解析:
this
指针存储了当前对象(即调用show()
的对象)的内存地址。obj1.show()
中的this
指向obj1
,obj2.show()
中的this
指向obj2
。
2. this
主要用途
(1) 解决成员变量和局部变量重名
class MyClass {
private:
int value;
public:
void setValue(int value) { // 形参和成员变量同名
this->value = value; // 使用 this 访问成员变量
}
};
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
✅ 解析:
this->value
表示类的成员变量value
。value
(不带this->
)是形参,二者名称相同时,this->
让编译器区分它们。
(2) 链式调用
class MyClass {
private:
int value;
public:
MyClass& setValue(int v) {
value = v;
return *this; // 返回当前对象的引用
}
void show() {
std::cout << "Value: " << value << std::endl;
}
};
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
int main() {
MyClass obj;
obj.setValue(10).show(); // 链式调用
}
- 1
- 2
- 3
- 4
✅ 解析:
setValue()
返回*this
(即当前对象的引用)。- 这样可以连续调用
obj.setValue(10).show();
。 - 关于引用的概念见 http://iyenn.com/rec/1709347.html 【与这里强相的内容请搜索“函数返回值为引用类型的定义”】
(3) 在类方法中返回当前对象的指针
class MyClass {
public:
MyClass* getThis() {
return this;
}
};
- 1
- 2
- 3
- 4
- 5
- 6
✅ 解析:
getThis()
返回当前对象的地址。
(4) this
不能用于静态成员函数
class MyClass {
public:
static void staticFunc() {
// std::cout << this; ❌ 错误
}
};
- 1
- 2
- 3
- 4
- 5
- 6
✅ 解析:
staticFunc()
是静态成员函数,它不依赖具体对象,所以不能使用this
。
总结
this
是一个指向当前对象的指针,只能用于非静态成员函数。- 主要用途:
- 解决成员变量和形参重名
- 实现链式调用
- 返回当前对象的指针
- 静态成员函数 不能使用
this
,因为它们不属于某个具体对象。
这样,你在 C++ 编程中遇到 this
关键字时,就能快速理解它的用途了! ?

昊虹嵌入式技术交流群
QQ群名片


评论记录:
回复评论: