やあ、
この例で私の質問を説明しましょう:
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 ?
}
これにより、2つの質問をすることができます。
- abstract-base-classポインタでdeleteを使用すると、どのデストラクタが呼び出されますか?
- 上記のコピー方法のいずれかを使用して、オブジェクト「a」のコピーを作成することはできますか?