空のクラスのオブジェクトのサイズはどうなるのだろうと思っていました。他のオブジェクトと同じように参照およびポイントできるようにする必要があるため、0バイトにはできません。しかし、そのようなオブジェクトはどのくらいの大きさですか?
私はこの小さなプログラムを使用しました:
#include <iostream>
using namespace std;
class Empty {};
int main()
{
Empty e;
cerr << sizeof(e) << endl;
return 0;
}
Visual C ++コンパイラとCygwin-g ++コンパイラの両方で取得した出力は1バイトでした。マシンワードのサイズ(32ビットまたは4バイト)になると思っていたので、これは少し意外でした。
なぜ 1バイトのサイズなのか誰かが説明できますか?なぜ 4バイトではないのですか?これはコンパイラまたはマシンにも依存していますか?また、空のクラスオブジェクトのサイズが0バイトにならない理由について、より説得力のある理由を誰かが示すことができますか?