Empty base optimization

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

(more…)

Aggregates and PODs

Aggregates

Definition

  • array type
  • class type that has
    • no private or protected members
    • no user-provided constructors (explicitly defaulted or deleted constructors are allowed)
    • no base classes
    • no virtual member functions
    • no brace-or-equal initializers for non-static members

(more…)