,因为这将使两个不同的对象具有相同的内存地址成为可能。这就是为什么即使空类的大小也必须至少为1的...
372.C++中一个空类的大小为什么是1? 这就是实例化的原因(空类同样可以被实例化),每个实例在内存中都有一个独一无二的地址,为了达到这个目的,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址,所以空类所占的内存大小是1个字节。 373.一个结构体中有一个int,一个...
空类是1个字节,一个类中虚函数、成员函数(包括静态和非静态)和静态数据成员都不占用类对象的存储空间。有虚函数时,会有一个指向虚表的指针,大小为4个字节,类不为空时,为空的那1个字节是不计算的。 空类之所以是1个字节,是因为求类大小就是求它实例化以后的大小,空类也是可以被实例化的,每个实例在内存中都...
空的类是会占用内存空间的,而且大小是1,原因是C++要求每个实例在内存中都有独一无二的地址。 类内部的成员变量: 普通的变量:是要占用内存的,但是要注意对齐原则(这点和struct类型很相似)。 static修饰的静态变量:不占用内容,原因是编译器将其放在全局变量区。 类内部的成员函数: 普通函数:不占用内存。 虚函数:...
空类的大小不为零。通常是1个字节。确保两个不同的对象具有不同的地址是非零的。请参见以下示例。 #include<iostream>usingnamespacestd;classEmpty{};intmain(){Empty a,b;if(&a==&b)cout<<"impossible "<<endl;elsecout<<"Fine "<<endl;return0;} ...
,大小为非零的原因是“为了确保两个不同对象的地址不同”。大小可以是1,因为这里的对齐并不重要,...
1. 空类的大小。空类型实例中不包含任何信息,应该大小为0. 但是当我们声明该类型的实例的时候,它必须在内存中占有一定的空间,否则无法使用这些实例。至于占用多少内存,由编译器决定。g++中每个空类型的实例占1字节空间。注意空struct即空类,这就是为什么c++的空struct占一个字节的原因。 2. 构造函数、析构函数、...
在C++下,空类和空结构体的大小是1(编译器相关),这是为什么呢?为什么不是0? 这是因为,C++标准中规定,“no object shall have the same address in memory as any other variable” ,就是任何不同的对象不能拥有相同的内存地址。 如果空类大小为0,若我们声明一个这个类的对象数组,那么数组中的每个对象都拥有...
a的值为1,这是因为即使a是空类对象,它也需要常用存储空间,而编译器在这种情况下给空类分配了一个字节,故大小为1。 5.只有一个int32的类对象的sizeof class Test{ int32_t m_data;};Test t;size_t a = sizeof(t); a的值为4,这是因为Test不再是一个空类,它的对象中存储着一个int32_t的变量,...
类A空类型的实例虽然不包含任何信息,但是必须在内存中占一定的空间,否则无法使用这些实例,一般都是1 ...