Scott は、Effective C++、第 3 版、pg. 43 抽象クラスを作成するには、純粋な仮想デストラクタを与えるだけでよいことがわかりました。
class AWOV { // AWOV = "Abstract w/o Virtuals"
public:
virtual ~AWOV() = 0; // declare pure virtual destructor
};
それから、彼は続けて、1 つのひねりがあると言いました: 純粋な仮想デストラクタの定義を提供する必要があります:
AWOV::~AWOW() {} // definition of pure virtual dtor
私の質問は、 を指定することによって= 0
、純粋仮想関数の場合、関数は、この純粋仮想関数が宣言されているクラスの定義を持つことができないと言っているということです。
ここで純粋仮想デストラクタの定義を (空であっても) 提供してもよいのはなぜですか?