class A{
public:
A();
private:
~A();
};
class B:public A{
public:
B(){};
private:
~B();
};
int main()
{
return 0;
}
Ho un errore di compilazione come questo:Perché il costruttore derivato ha bisogno di un distruttore di base?
test.cpp: In constructor 'B::B()':
test.cpp:5:4: error: 'A::~A()' is private
test.cpp:10:8: error: within this context
so il costruttore derivato bisogno di invocare il distruttore di base, quindi ho impostato A::A()
come public
. Tuttavia, perché il compilatore si lamenta del fatto che sia necessario il numero pubblico A::~A()
?
@EdChum: No, la domanda non spiega perché il costruttore derivato abbia bisogno di accedere al distruttore della classe base. –
@MikeSeymour sì hai ragione, ritirando il mio voto ravvicinato – EdChum
Probabilmente * * non puoi costruire una classe che non puoi distruggere e non puoi distruggere 'B' perché il distruttore ha bisogno di accedere a' ~ A() 'che è privato (è necessario per renderlo protetto o "amico" di classe B). – firda