.C++ : Base 클래스 SubObject의 크기를 어떻게 알 수 있습니까?
Here 나는 빈 자료의 최적화를 논의되었고, MSalters이 흥미로운 설명을했다 : 어떤 클래스는 지금까지 는 sizeof (클래스) 빈 여부 == 0을 가질 수
. 그러나 우리는 특별히 크기의 빈 기본 클래스 하위 개체에 대해 말하고 있습니다. 자체 vtable이나 vtable 포인터가 필요하지 않습니다. 일반적인 vtable 포인터의 레이아웃을 0으로 가정합니다. 제로 크기의 기본 클래스 하위 개체가 vtable 포인터를 파생 클래스와 공유하게됩니다. 문제 없습니다 : 어쨌든 이 같아야합니다. 가상 기능 중 상당 부분이 입니다.
제 질문은 구체적으로입니다 : 컴파일러는 빈 클래스를 기본 클래스로 사용하거나 최적화하지 않을 수도 있습니다. 우리는 그것이 실제로 무엇을하는지 어떻게 결정할 것인가?
그리고 일반적으로 기본 클래스 하위 개체의 크기를 어떻게 알 수 있습니까? 기본 하위 객체의 크기는 기본 객체로 사용하는지 여부에 관계없이 동일합니까? 컴파일러는 Empty Base Classes로만 최적화합니까?
.