protected zu private
-
Abend!
Wenn ich eine protected pure virtual Methode A::method habe und diese in B implementiere, darf die dann in B private sein?
class A { protected: virtual void method() = 0; }; class B : public A { private: // geht das? Oder muss es auch protected sein? virtual void method() { .. } };
-
Geht, ist aber eine fragwürdige Vorgehensweise. Von
Babgeleitete Klassen können nach wie vor aufmethod()zugreifen, indem der Zugriff über einA*oderA&erfolgt.Warum ist
method()nicht schon inAprivate?
-
Nexus schrieb:
Geht, ist aber eine fragwürdige Vorgehensweise. Von
Babgeleitete Klassen können nach wie vor aufmethod()zugreifen, indem der Zugriff über einA*oderA&erfolgt.Warum ist
method()nicht schon inAprivate?Ich dachte wenn ich method() in A private mache, dann können sie abgeleitete Klassen nicht überschreiben. Auf private haben Subklassen doch keinen Zugriff?

-
C++Frager schrieb:
Auf private haben Subklassen doch keinen Zugriff?

Das betrifft primär den Aufruf. Virtuelle Funktionen können durchaus privat sein und in abgeleiteten Klassen überschrieben werden.
Siehe auch http://www.gotw.ca/publications/mill18.htm