Если класс является производным от другого класса, какРеализация защищенного/частного наследования компилятор
class B{};
class D : private B{};
тогда я не могу создать производные объекты класса, как: -
B* ptr = new D;
Если я проверить разницу сборки этого кода против ассемблерного кода класса D, получающего из класса B публично, я не нахожу никакого отличия.
Может ли кто-нибудь объяснить, как и на какой стадии компилятор проводит различие между государственным/защищенным и частным наследством.
Какой компилятор вы спрашиваете? Почему вы заботитесь о реализации конкретного компилятора, а не о семантике, предоставляемой вашему коду стандартом C++? – Mankarse
Интересно: Вы правильно пишете, что не можете этого сделать. Но тогда вы пишете о сравнении кода ассемблера. Если он не компилирует, какой код ассемблера вы смотрите? – Rene
@Rene, для сравнения кода сборки я вообще не создаю объект производного класса. Только компиляция кода, который имеет оба класса, определенные в файле. –