Ich löste einige grundlegende Vererbungsfrage. Ich bin auf etwas gestoßen, dass ich die Logik nicht verstehe. Wenn ich die abgeleitete Klasse von der Basisklasse als privat erwerbe, kann ich sogar auf die öffentlichen Mitglieder der Basisklasse zugreifen. Hier ist mein Code,Unterschied mit öffentlichen, privaten und geschützten
#include <iostream>
struct Shape
{
virtual void print()
{
std::cout << "SHAPE" << std::endl;
}
virtual ~Shape() {}
};
struct Box : private Shape
{
virtual void print()
{
std::cout << "BOX" << std::endl;
}
};
int main(int argc, char** argv)
{
Shape* s = new Box; //illformed ? can't access the public members of the base.
s->print();
delete s;
return 0;
}
Fragen Sie Ihren Lehrer, lesen Sie Bücher –
Ihr C++ - Compiler ist kaputt. gcc 7.1.1 gibt eine Diagnose korrekt aus und kann den Code nicht kompilieren: 'error: 'Shape' ist eine unzugängliche Basis von 'Box'' –
Es bedeutet also, wenn ich als Privat erben, kann shape nicht auf Box zugreifen. Ja? Ähnlich wie wo wir nicht auf die privaten Mitglieder außerhalb der Klasse zugreifen können. – Bob11