Search code examples
c++compiler-construction

Implementation of protected / private inheritance in compiler


If a class derives from another class like

class B{};
class D : private B{};

then I can not create derived class objects like:-

B* ptr = new D;

If I check the assembly difference of this code vs assembly code of class D deriving from class B publically, I don't find any differnce.

Can anyone explain exactly how and at what stage the complier is differentiating between public / protected and private inheritance.


Solution

  • The compiler checks protection (public/private) in the frontend while parsing your code. Once it gets to the optimizer and code generation they are gone.