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