How do I write EBO-friendly classes (empty base optimization) in high-performance C++?

Learn how to create EBO-friendly classes in high-performance C++. This guide provides practical examples and best practices for utilizing empty base optimization effectively in your C++ code.

empty base optimization, EBO, high-performance C++, C++ classes, inheritance optimization, memory efficiency


class Base { };

class Derived : public Base {
public:
    int data;
    Derived(int data) : data(data) { }
};

class EBOClass : private Base {
public:
    int data;
    EBOClass(int data) : data(data) { }
};

int main() {
    Derived d(10);  // Traditional class
    EBOClass e(20); // EBO-friendly class

    // The sizes of d and e should demonstrate the memory optimization in EBO
    std::cout << "Size of Derived: " << sizeof(d) << std::endl; // Outputs size
    std::cout << "Size of EBOClass: " << sizeof(e) << std::endl; // Outputs size
    return 0;
}
    

empty base optimization EBO high-performance C++ C++ classes inheritance optimization memory efficiency