Pure virtual destructor in C++
问题 Is it wrong to write: class A { public: virtual ~A() = 0; }; for an abstract base class? At least that compiles in MSVC... Will it crash at run time? 回答1: Yes. You also need to implement the destructor: class A { public: virtual ~A() = 0; }; inline A::~A() { } should suffice. And since this got a down vote, I should clarify: If you derive anything from A and then try to delete or destroy it, A 's destructor will eventually be called. Since it is pure and doesn't have an implementation,