C++ 类里面,函数占用内存问题。

来源:百度知道 编辑:UC知道 时间:2024/05/28 03:43:30
先看两段代码:

代码段1:
class A
{
public:
int print(){ cout<<"This is A"<<endl;}
};
inr main()
{
A a;
cout << "Size of A = " << sizeof(a) << endl;
}

输出结果:
Size of A =1

代码段2:

class A
{
public:
int print1(){ cout<<"This is A"<<endl;}
int print2(){ cout<<"This is A"<<endl;}
int print3(){ cout<<"This is A"<<endl;}
};
inr main()
{
A a;
cout << "Size of A = " << sizeof(a) << endl;
}

输出结果:
Size of A =1

问题:类里面不管有多少个函数,这个类的对象只占1个字节的内存。这个字节的内存的内容是什么?是指针吗?指针不是占4个字节吗?
lytttttt的回答很好,很强大。但是我问题的重点是,是什么占了那1个字节的内存?

当类中类有定义任何变量的时候,类的对象都是1个字节的,当类中没有任何变量的时候,这个类里没有任何真正的成员变量,所以大小应该是0,但0大小不好在内存中定位一个地址,所以,就规定它大小为0的对象要占一字节空间,以便让它拥有一个合法的地址。如果是有派生类

使我感到别的悲痛。
他把一生浪费在工作上所得的钱
让我独自孤独终老
季节在遥远的钟声中雪落石出了。这时你会看到另一个你,在一片雪霁后的松柏枝上,蓝色的雪
久久地、久久地抖着波纹。
他中边的这个也在改变哈哈

对象的大小是它的数据成员所占存储空间之和,就和结构体一样。类中的函数是所有该类对象通用的方法,不算作对象的成员,因此也不算在对象的存储空间内

a只是一个对象名,它的具体内容我也不知道,如果写成A* a;结果就是Size of A =4.这时a才是一个指针。

老师说链式存储是重点,也是难点