ich dies aus C++ FAQSollte ich von einer privaten abgeleiteten Klasse auf seine Basisklasse zoomen?
Im Allgemeinen gefunden, Nr
Von einer Memberfunktion oder Freund einer privat abgeleiteten Klasse, die Beziehung zu der Basisklasse ist bekannt, und die Aufwärtskonvertierung von PrivateDer * zu Base * (oder PrivateDer & zu Base &) ist sicher; nein Guss wird benötigt oder empfohlen.
jedoch Benutzer von PrivatelyDer diese unsichere Umwandlung vermeiden sollten, da es auf einer privaten Entscheidung von PrivatelyDer basiert, und wird ohne vorherige Ankündigung geändert werden.
Wie kann man die obigen Wörter verstehen? Ich denke nicht, dass die Erklärung richtig oder genau ist.
Ich habe einen Code wie diese
class A{
};
class B: private A{
};
int main(){
B *b = new B();
A *a = new A();
a = b; //wrong
a = (A*)b; //right
}
Die implizite Umwandlung nicht kompiliert (A ist unzugänglich Basis), und die zweite wird mit einem C-Casts, dass das Äquivalent von 'hier reinterpret_cast'? – UncleBens
Ja, du hast Recht, interpretieren Besetzung ist böse, wie wir alle wissen. Was er in der letzten Zeile getan hat, ist keine gute Praxis –