14.this指针调用成员变量时,堆栈会发生什么变化?

14.this指针调用成员变量时,堆栈会发生什么变化?

当在类的非静态成员函数访问类的非静态成员时,编译器会自动将对象的地址传给作为隐含参数传递给函数,这个隐含参数就是this指针。

即使你并没有写this指针,编译器在链接时也会加上this的,对各成员的访问都是通过this的。

例如你建立了类的多个对象时,在调用类的成员函数时,你并不知道具体是哪个对象在调用,此时你可以通过查看this指针来查看具体是哪个对象在调用。This指针首先入栈,然后成员函数的参数从右向左进行入栈,最后函数返回地址入栈。

#include <iostream>  
using namespace std;

class MyClass
{
public:
    void printThis()
    {
        cout << "指针值: " << this << endl;
    }
};

int main() 
{
    MyClass obj1;
    MyClass obj2;

    obj1.printThis();
    obj2.printThis();
    cout << "obj1地址: " << &obj1 << endl;
    cout << "obj2地址: " << &obj2 << endl;

    return 0;
}

参考:阿秀

posted @   CodeMagicianT  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示