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 B abgeleitete Klassen können nach wie vor auf method() zugreifen, indem der Zugriff über ein A* oder A& erfolgt.

    Warum ist method() nicht schon in A private ?



  • Nexus schrieb:

    Geht, ist aber eine fragwürdige Vorgehensweise. Von B abgeleitete Klassen können nach wie vor auf method() zugreifen, indem der Zugriff über ein A* oder A& erfolgt.

    Warum ist method() nicht schon in A private ?

    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


Anmelden zum Antworten