可能重复:
为什么派生类中的重写函数隐藏了基类的其他重载?
你好,
让我用这个例子解释我的问题:
class A
{
virtual ~A() = 0 { }
A(const A&);
virtual void operator =(const A&) = 0;
}
class B : public A
{
~B();
B(const B&);
void operator =(const B&);
}
void main(void)
{
A* a = new B();
delete a; // Is ~A() called, ~B() or both ?
}
这让我问了两个问题:
- 在抽象基类指针上使用 delete 时调用哪个析构函数?
- 是否可以使用上述复制方法之一复制我的对象“a”?