Avatar ·

Was ist der Unterschied zwischen public, protected und private Vererbung in C++?

Hallo Kollegen! Ich habe angefangen, C++ zu lernen und bin zur Vererbung gekommen, aber ich bin bei den Zugriffsmodifikatoren bei der Klassenvererbung verwirrt. Die Bücher erklären es irgendwie kompliziert.\n\nAngenommen, es gibt eine Basisklasse mit verschiedenen Feldern:\n\n```cpp\nclass Base {\npublic:\n int pub = 1;\nprotected:\n int prot = 2;\nprivate:\n int priv = 3;\n};\n```\n\nWarum muss man in C++ `class Derived : public Base` schreiben und nicht einfach `class Derived : Base`? Was ändert sich, wenn ich `class Derived : private Base` oder `class Derived : protected Base` schreibe?\n\nIch habe verschiedene Varianten ausprobiert, verstehe aber die Logik nicht. Zum Beispiel: Wenn ich über `private` vererbe, kann ich dann innerhalb der abgeleiteten Klasse auf `pub` und `prot` zugreifen? Und von außen? Was passiert, wenn ich eine Struktur von einer Klasse ableite? Und vor allem – wozu braucht man überhaupt diese drei Arten der Vererbung?