|
2
31
该标准规定,所有大多数派生对象都具有sizeof()>=1:
|
|
3
17
除其他外,这是允许您处理对象数组和指向它们的指针所必需的。如果您的元素被允许为零大小,那么
它可能不是机器字的原因是,其中没有实际需要在字边界(例如整数)上对齐的元素。例如,如果您将
可能 不占用任何空间的对象。但是,该节增加了以下案文:
由于数组需要能够区分元素,这意味着
所以,措辞不同,但总体效果相同。 |
|
|
4
5
尽管不需要为空类分配任何内存,但为了使对象成为空类,编译器分配可以分配的最小内存,即1字节。通过这种方式,编译器可以唯一地区分同一空类的两个对象,并且能够将对象的地址分配给空类类型的指针。 |
|
|
5
5
|
|
|
6
4
我认为链接到一个解释这一好处的答案可能会有所帮助。
It is
|
|
|
7
3
http://bytes.com/topic/c/insights/660463-sizeof-empty-class-structure-1-a
|
|
|
8
2
为空类分配1字节取决于编译器。编译器需要确保对象驻留在不同的内存位置,并且需要为对象分配非零内存大小。 http://listenvoice.com/listenVoiceNote.aspx?id=27 听听关于ListenVoice C++编程面试问题的空基础优化。 |
|
|
9
2
类没有数据成员但大小为1字节的原因是* *必须存储在内存中,以便引用或指针可以指向该类的对象 |
|
|
10
0
空类-该类不包含任何内容。 任何不为空的类都将由其在内存中的内容表示。 由于它没有内容,无法在内存中显示它的存在,但类存在,所以必须在内存中显示它的存在。 要在内存中显示空类,需要1个字节。 |
|
|
11
0
我认为这是因为1字节是可以用作占位符的最小内存单元,并且它不能给出零大小,因为不可能创建对象数组。。 您所说的“这对我来说有点惊讶,因为我希望它的大小与机器字(32位或4字节)相同。”对于类型为empty()的引用变量(macine words),而不是类本身的大小(抽象数据类型), |
|
|
12
0
我认为这个问题只是理论上的问题,但在实践中并不重要。 正如其他人已经指出的,从空类派生不会造成任何伤害,因为这不会为基类部分消耗任何额外的内存。 此外,如果一个类是空的(从理论上讲,它不需要任何每实例内存,即它没有任何非静态数据成员或虚拟成员函数),那么它的所有成员函数也可以(并且应该)定义为静态的。因此,不需要创建此类的实例。 一句话:如果您发现自己编写了一个空的类X,那么只需将所有成员函数设置为静态即可。这样就不需要创建X对象,派生类也不会受到任何影响。 |
|
|
13
0
返回大小1可确保两个对象的地址不相同。 |
|
|
14
0
它为非零,以确保两个不同的对象具有不同的地址。 |
|
|
15
0
对于空类的对象,编译器为唯一地址标识分配1个字节。因此,如果一个类有多个对象,它们可以有不同的唯一内存位置。假设,如果一个类没有任何大小,那么内存位置上会存储什么?这就是为什么在C++程序中创建空类对象时,它需要一些内存来存储,并且可以保留的最小内存量是1字节。因此,如果我们创建一个空类的多个对象,每个对象都有一个唯一的地址。
|
|
|
16
-2
我认为,如果一个空类的大小为零,则意味着它不存在。为了使它(类)存在,它需要至少有一个字节,因为这个字节是内存/引用地址。 |
|
|
17
-4
是因为 这 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |