C++之Class内存

同一类的不同对象,在调用相同的成员函数时,他们的入口地址是否相同?

是相同的因为他们都存在了代码区

什么样的机制来保证他们同时调用的时候不冲突,并且输出是各自的结果的?

类就相当于是个空盒子,组合了this指针,才有了灵魂。

用this指针来保证他们的数据数据不发送冲突,因为传入的是不同this指针,所以得到的是不同的变量

 

#ifndef BASECLASS_H
#define BASECLASS_H


class BaseClass
{
public:
    BaseClass();

    static void staticFunc();
    void funcNotUseMemberVar();
    void funcUseMemberVar();

    virtual void virtulalFunc();

public:
    int i;

};

#endif // BASECLASS_H
#include "BaseClass.h"
#include <iostream>
using namespace std;

BaseClass::BaseClass()
    : i(1000)
{

}

void BaseClass::staticFunc()
{
    cout << __FUNCTION__ <<endl;
}

void BaseClass::funcNotUseMemberVar()
{
    cout << __FUNCTION__ <<endl;
}

void BaseClass::funcUseMemberVar()
{
     cout << i << __FUNCTION__ <<endl;
}

void BaseClass::virtulalFunc()
{
 cout << __FUNCTION__ <<endl;
}
#include <QCoreApplication>
#include "BaseClass.h"
#include <iostream>
using namespace std;


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    BaseClass *pBaseObj = nullptr;//new BaseClass();
    pBaseObj->funcNotUseMemberVar();
    // pBaseObj->funcUseMemberVar(); // 崩溃 this 是空,调用this->成员变量,肯定就崩溃了
    pBaseObj->staticFunc();
    // pBaseObj->virtulalFunc(); // 崩溃 this 是空,虚函数表的调用肯定也崩溃
    return a.exec();
}

 

内存函数地址const属性操作浅谈_213的博客-CSDN博客

同一类的不同对象,在调用同一成员函数时,是如何保证不冲突且各自输出各自想要的结果的?-编程语言-CSDN问答

posted on 2021-09-06 00:31  奔跑吧,蜗牛!  阅读(105)  评论(0编辑  收藏  举报

导航