我想从类A继承,但A的析构函数不是虚拟的,我不能修改A的定义。如何避免以下情况?如何从析构函数不是虚拟的基类中正确继承?
struct A
{
A()
: a(new char[8])
{}
~A()
{
delete[] a;
}
char* a;
}
struct B : A
{
B()
: A(), b(new char[8])
{}
~B()
{
delete[] b;
}
char* b;
};
int main()
{
A* p_a = new B;
delete p_a; // How to avoid such a dangerous deletion?
}
你没有遵循三条规则。请阅读有关它。 – 2013-02-11 06:34:52