gar*_*ima 14 c++ java empty-class
C++和Java中空类的大小是多少?为什么不是零?
sizeof();在C++的情况下返回1.
Mar*_*ork 26
该标准明确指出一个类的大小不能为零.
因为每个对象都需要一个唯一的地址(也在标准中定义),所以你不能真正拥有零大小的对象.
想象一下零大小的对象数组.因为它们的大小为零,所以它们都排在同一个地址位置.因此,更容易说对象的大小不能为零.
即使对象具有非零大小,如果它实际占用零空间,则不需要增加派生类的大小:
例:
#include <iostream>
class A {};
class B {};
class C: public A, B {};
int main()
{
std::cout << sizeof(A) << "\n";
std::cout << sizeof(B) << "\n";
std::cout << sizeof(C) << "\n"; // Result is not 3 as intuitively expected.
}
g++ ty.cpp
./a.out
1
1
1
Run Code Online (Sandbox Code Playgroud)
Ste*_*n C 15
在Java案例中:
sizeof操作员."空类"(即Instrumentation)的实例的大小不为零,因为实例具有与之关联的隐式状态.例如,需要状态:
当前的Hotspot JVM使用巧妙的技巧来表示占用两个32位字的对象头中的状态.(这在某些情况下会扩展;例如,实际使用原始锁定时,或者在java.lang.Object调用之后.)
| 归档时间: |
|
| 查看次数: |
10404 次 |
| 最近记录: |