Unterschied zw. protected und private ctor??



  • Hi

    Was ist eigendlich der Unterschied zwischen einem protected Konstruktor
    und einem private Konstruktor??



  • Das ist der gleiche Sachverhalt wie bei anderen protected/private Membern: private ist nur für die eigene Klasse sichtbar, protected auch für abgeleitete Klassen. Dh du kannst eine Klasse mit protected ctor nicht alleine instanziieren, aber eine Unterklasse davon schon (die dann ihrerseits ihr Basisklassensubobjekt konstruieren kann, weil sie Zugriff auf den Ctor hat).



  • class X{ X(){} };  int main(){ X obj; }
    

    Da beschwert sich der Compiler über den privaten Ctor.

    #include <conio.h> 
    #include <iostream>
    
    class Y
    {
    protected:
      Y(){std::cout<<"Y ctor"<<std::endl;}
      ~Y(){std::cout<<"Y dtor"<<std::endl;}
    };
    
    class X : public Y
    {
    public:
      X(){std::cout<<"X ctor"<<std::endl;}
      ~X(){std::cout<<"X dtor"<<std::endl;}
    };
    
    int main(){ {X obj;}  getch(); }
    

    Hier geht es zumindest aus Sicht der Kindklasse.


Anmelden zum Antworten