一、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类型的指针,不能修改任何成员变量。