一般地,建立对象和删除对象时,父类构造函数->子类构造函数->……->子类析构函数->父类析构函数。
特例:如果用new建立了一个对象,并将父类的指针指向这个子类的对象,那么用delete撤销对象时,系统只执行基类的析构函数,而不执行派生类的析构函数。
如果希望按照子类析构函数->父类析构函数的顺序执行,那么应该将基类的析构函数声明为virtual(建议这么做)。如果基类的虚构函数为virtual,那么该基类的所有派生类的析构函数也自动称为虚函数。
注意:构造函数不能声明为virtual
一般地,建立对象和删除对象时,父类构造函数->子类构造函数->……->子类析构函数->父类析构函数。
特例:如果用new建立了一个对象,并将父类的指针指向这个子类的对象,那么用delete撤销对象时,系统只执行基类的析构函数,而不执行派生类的析构函数。
如果希望按照子类析构函数->父类析构函数的顺序执行,那么应该将基类的析构函数声明为virtual(建议这么做)。如果基类的虚构函数为virtual,那么该基类的所有派生类的析构函数也自动称为虚函数。
注意:构造函数不能声明为virtual