#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(){
Wie Klasse B Klasse A privat erbt, diese Upcasting nicht funktionieren soll:Warum ermöglicht explizites Typcasting Upcasting für private Vererbung?
A* a = new B;
Aber explizite Schublade gesteckt wird, ermöglicht wird. Warum?
A* a1 = (A*)new B;
a1->f();
return 0;
}
Der c-cast erlaubt die meisten Konvertierungen (sogar von 'int *' in 'A *'). Die Verwendung könnte dann UB mit erwarteter Ausgabe sein. – Jarod42
Duplizieren: http://stackoverflow.com/questions/17925124/can-i-cast-a-derived-class-to-a-private-base-class-c –