Empty base optimization

C++에서 class나 struct는 멤버를 하나도 가지지 않아도 크기가 0이 아니라 최소 1은 되어야 한다. 이것은 두 다른 객체가 항상 다른 주소를 갖도록 하기 위해서이다. 그런데 base class의 경우에는 0이 될 수 있다. 이것을 Empty base optimization이라고 한다. unique_ptr가 오버헤드가 전혀 없는 것도 이것 때문이다.

그런데 base class가 non-static 멤버이거나 non-static 멤버의 base 이면 EBO가 적용되지 않는다. 왜냐하면 두 base subobject가 다른 주소를 가져야 하기 때문이다.

Leave a Reply

Your email address will not be published. Required fields are marked *