6.C++对象模型

发布时间:2024年01月19日

一.成员变量和成员函数分开存储:

??????? 在C++中,类的成员变量和成员函数分开存储,只有非静态成员变量在属于类的对象上。

1.空对象的所占内存大小:

//成员变量和成员函数分开存储
class Person
{
    

};

void test()
{
    Person p;
    cout << "size of p = " << sizeof(p) << endl;
}

输出结果:

size of p = 1

原因:

????????C++编译器会给每个空对象也分配一个字节空间,是为了区分空对象占内存的位置,每个空对象也应该右一个独一无二的内存地址。

?2.非静态成员变量在属于类的对象上:

例1:

//成员变量和成员函数分开存储
class Person1
{
    int a = 10;//非静态成员变量,属于类对象
};

class Person2
{
    static int b;//静态成员变量,不属于类对象
};
int Person2 :: b = 10;

void test()
{
    Person1 p1;
    cout << "size of p1 = " << sizeof(p1) << endl;

    Person2 p2;
    cout << "size of p2 = " << sizeof(p2) << endl;
}

输出结果:

size of p1 = 4
size of p2 = 1

?例2:

//成员变量和成员函数分开存储
class Person1
{
    static void func1()//静态成员函数,不属于类对象
    {
        cout << "静态成员函数" <<endl;
    }
};

class Person2
{
    static void func2()//非静态成员函数,不属于类对象
    {
        cout << "非静态成员函数" <<endl;
    }
};
void test()
{
    Person1 p1;
    cout << "size of p1 = " << sizeof(p1) << endl;

    Person1 p2;
    cout << "size of p2 = " << sizeof(p2) << endl;
}

输出结果:

size of p1 = 1
size of p2 = 1
文章来源:https://blog.csdn.net/2303_76295261/article/details/135695672
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。