一、this指针概述
this指针是C++中的一个关键字,它是指向当前对象的指针。当一个成员函数被调用时,它被自动传递一个指向调用对象的this指针。在类中,this指针指向本对象的存储空间起始地址。在成员函数中使用this指针可以访问对象的成员变量和成员函数。
二、在成员函数中使用this指针
在成员函数中,this指针是一个隐式参数,它指向当前对象。我们可以使用this指针来访问对象的成员变量和成员函数,例如:
class MyClass {
public:
void func() {
// 使用this指针访问成员变量
this->m_var = 10;
// 使用this指针调用成员函数
this->otherFunc();
}
private:
int m_var;
void otherFunc() {
// 函数体
}
};
在上面的代码中,我们使用this指针访问了成员变量m_var和成员函数otherFunc。
三、区分变量和成员变量
在类内部,成员变量和常量可以和函数参数同名,这时候就需要使用this指针来区分它们。例如:
class MyClass {
public:
void func(int a) {
// 使用this指针访问成员变量m_var
this->m_var = a;
// 访问函数参数a
int b = a;
}
private:
int m_var;
};
在上面的代码中,我们使用this指针访问了成员变量m_var,而函数参数a则直接访问。
四、构造函数中的this指针
在构造函数中,this指针指向正在被初始化的对象。我们可以使用this指针来初始化对象的成员变量,例如:
class MyClass {
public:
MyClass(int var) {
// 使用this指针初始化成员变量m_var
this->m_var = var;
}
private:
int m_var;
};
在上面的代码中,我们使用this指针来初始化成员变量m_var。
五、const成员函数中的this指针
当类中的成员函数被声明为const时,它们承诺不会修改对象,这时候this指针的类型就是const类型的指针。在const成员函数中,我们不能修改任何成员变量,例如:
class MyClass {
public:
void func() const {
// 不能修改成员变量
// this->m_var = 10; // error
}
private:
int m_var;
};
在上面的代码中,我们不能修改成员变量m_var。
六、总结
this指针是一个非常重要的概念,它指向当前对象,可以在成员函数中使用。使用this指针可以访问对象的成员变量和成员函数。在区分变量和成员变量时,需要使用this指针。在构造函数中,this指针指向正在被初始化的对象,可以用来初始化成员变量。在const成员函数中,this指针是一个const类型的指针,不能修改任何成员变量。