C++ this 指针

第一部分

this 指针的类型可理解为 Box*。
此时得到两个地址分别为 box1 和 box2 对象的地址。

实例:
#include <iostream>
using namespace std;

class Box{
    public:
        Box(){;}
        ~Box(){;}
        Box* get_address()   //得到this的地址
        {
            return this;
        }
};

int main(){
    
    Box box1;
    Box box2;
    // Box* 定义指针p接受对象box的get_address()成员函数的返回值,并打印
    
    Box* p = box1.get_address();  
    cout << p << endl;
    
    p = box2.get_address();
    cout << p << endl; 

    return 0;
}

第二部分

在 C++ 中,成员变量和成员函数可以共用同名标识符,因此在类的成员函数中,如果需要访问成员变量,需要使用 this 指针来显式指定当前对象的成员变量。

举例来说,如果类中声明了一个名为 name 的成员变量,并且在成员函数中使用了与成员变量同名的形参,那么在函数中直接使用 name 将会引用函数的形参而不是成员变量。这时就需要使用 this 指针来指定当前对象的成员变量。例如:

class Person {
private:
    string name;
public:
    void setName(string name) {
        this->name = name; // 使用 this 指针显式指定成员变量
    }
};

在上述代码中,我们定义了一个名为 Person 的类,并在其中定义了一个成员变量 name。在成员函数 setName 中,我们使用了与成员变量同名的形参 name,在给成员变量赋值时使用了 this 指针来显式指定当前对象的成员变量,以避免形参与成员变量重名导致的错误。

当没有同名的形参时,也可以直接访问成员变量,使用 this->name 和直接使用 name 都可以。但是建议使用 this->name 来明确指明访问的是成员变量,增加代码的可读性和可维护性。

posted @ 2023-06-08 09:22  share0956  阅读(31)  评论(0)    收藏  举报