在C/C++中耳熟能详的一句话是“指针就是地址”,this指针也是如此。谁调用就指向谁,比如Cat类有2个对象分别为cat1和cat2,cat1调用则this指针的地址就是cat1的地址。代码如下。

#include <iostream>
using namespace std;

class Cat {
public:
    Cat* get_address()   //获取this的地址
    {
        return this;
    }
    Cat() {}
    ~Cat() {}
};

int main() {

    Cat cat1;
    Cat cat2;
    
    // 先打印cat1和cat2的地址
    cout << "cat1 addr:" << &cat1 << "\t";
    cout << "cat2 addr:" << &cat2 << endl;
    // 不同的对象调用get_address()函数将返回不同的地址
    Cat* p = cat1.get_address();
 
    cout << "cat1 return 'this addr':" << p << endl;

    p = cat2.get_address();
    cout << "cat2 return 'this addr':" << p << endl;

    return 0;
}

在这里插入图片描述
总结
在 C++ 中,this 指针是一个特殊的指针,它指向当前对象的实例。
在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。
this是一个隐藏的指针,可以在类的成员函数中使用,它可以用来指向调用对象。
当一个对象的成员函数被调用时,编译器会隐式地传递该对象的地址作为 this 指针。
友元函数没有 this 指针,因为友元不是类的成员,只有成员函数才有 this 指针。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐