this 关键字的含义
在 C++ 中,this 是 指向当前对象的指针。它存在于所有非静态成员函数中,指向调用该成员函数的对象。
1. this 的基本概念
class MyClass {
public:
void show() {
std::cout << "Address of this object: " << this << std::endl;
}
};
int main() {
MyClass obj1, obj2;
obj1.show(); // 输出 obj1 的地址
obj2.show(); // 输出 obj2 的地址
}
✅ 解析:
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 访问成员变量
}
};
✅ 解析:
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;
}
};
int main() {
MyClass obj;
obj.setValue(10).show(); // 链式调用
}
✅ 解析:
setValue()返回*this(即当前对象的引用)。- 这样可以连续调用
obj.setValue(10).show();。 - 关于引用的概念见 https://blog.youkuaiyun.com/wenhao_ir/article/details/145422877 【与这里强相的内容请搜索“函数返回值为引用类型的定义”】
(3) 在类方法中返回当前对象的指针
class MyClass {
public:
MyClass* getThis() {
return this;
}
};
✅ 解析:
getThis()返回当前对象的地址。
(4) this 不能用于静态成员函数
class MyClass {
public:
static void staticFunc() {
// std::cout << this; ❌ 错误
}
};
✅ 解析:
staticFunc()是静态成员函数,它不依赖具体对象,所以不能使用this。
总结
this是一个指向当前对象的指针,只能用于非静态成员函数。- 主要用途:
- 解决成员变量和形参重名
- 实现链式调用
- 返回当前对象的指针
- 静态成员函数 不能使用
this,因为它们不属于某个具体对象。
这样,你在 C++ 编程中遇到 this 关键字时,就能快速理解它的用途了! 🚀
1752

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



