class A{
public:
A();
private:
~A();
};
class B:public A{
public:
B(){};
private:
~B();
};
int main()
{
return 0;
}
我有一個編譯錯誤是這樣的:爲什麼派生的構造函數需要基礎析構函數?
test.cpp: In constructor 'B::B()':
test.cpp:5:4: error: 'A::~A()' is private
test.cpp:10:8: error: within this context
我知道派生的構造函數需要調用析構函數的基礎,所以我設置A::A()
爲public
。 但是,爲什麼編譯器會抱怨它需要公開A::~A()
?
@EdChum:不,這個問題沒有解釋爲什麼派生構造函數需要訪問基類的析構函數。 – 2014-09-25 10:38:20
@MikeSeymour是的,你是對的,撤回我的近距離投票 – EdChum 2014-09-25 10:39:25
你*可能*不能構建一個你不能銷燬的類,你不能銷燬'B',因爲析構函數需要訪問'〜A()'這是私有的(你需要使其受到保護或「朋友」B級)。 – firda 2014-09-25 10:42:36