|
发表于 2021-3-8 20:15:01
|
显示全部楼层
A Pure Virtual Destructor
Unlike ordinary member functions, a virtual destructor is not overridden when redefined in a derived class. Rather, it is extended: the lower-most destructor first invokes the destructor of its base class and only then, it is executed. Consequently, when you try to declare a pure virtual destructor, you may encounter compilation errors, or worse: a runtime crash. However, there's no need to despair--you can enjoy both worlds by declaring a pure virtual destructor without a risk. The abstract class should contain a declaration (without a definition) of a pure virtual destructor:
//Interface.h file
class Interface {
public:
virtual ~Interface() = 0; //pure virtual destructor declaration
};
Somewhere outside the class declaration, the pure virtual destructor has to be defined like this:
//Interface.cpp file
Interface::~Interface()
{} //definition of a pure virtual destructor; should always be empty
这段文字应该说得比较清楚了
|
|