#include<iostream>
using namespace std;
class A {
public:
void f(){cout<<"A"<<endl;}
};
class B : private A {
public:
void f(){cout<<"B"<<endl;}
};
int main (){
Поскольку класс B наследует класс A в частном порядке, это повышение не должно работать:
A* a = new B;
Но явное приведение типов позволяет. Почему?
A* a1 = (A*)new B;
a1->f();
return 0;
}