#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(){
Jako klasa B dziedziczy klasy A prywatnie, to upcasting nie ma pracować:Dlaczego jawne typowanie pozwala na upcasting dla prywatnego dziedziczenia?
A* a = new B;
Ale jawne typecasting jest umożliwienie go. Dlaczego?
A* a1 = (A*)new B;
a1->f();
return 0;
}
C-cast pozwala na większość konwersji (nawet od 'int *' do 'A *'). Wykorzystanie może być wtedy UB z oczekiwanym wynikiem. – Jarod42
Duplikat: http://stackoverflow.com/questions/17925124/can-i-cast-a-derived-class-to-a-private-base-class-c –