建设部网站查资质6,电商网页设计图片,河北石家庄房价,爱企网C 指出#xff1a;当一个派生类对象通过使用一个基类指针删除#xff0c;而这个基类有一个非虚的析构函数#xff0c;则结果是未定义的。运行时比较有代表性的后果是对象的派生部分不会被销毁。如果一个类要被另外一个类继承#xff0c;而且用其指针指向其子类对象时#… Ø C 指出当一个派生类对象通过使用一个基类指针删除而这个基类有一个非虚的析构函数则结果是未定义的。运行时比较有代表性的后果是对象的派生部分不会被销毁。如果一个类要被另外一个类继承而且用其指针指向其子类对象时如A* d new B();(假定A是基类B是从A继承而来的派生类)那么其(A类)析构函数必须是虚的否则在delete d时B类的析构函数将不会被调用因而会产生内存泄漏和异常
Ø 构造函数工作方式在构造一个类的对象时先构造其基类子对象即调用其基类的构造函数然后调用本类的构造函数
Ø 析构函数的工作方式是最底层的派生类most derived class的析构函数最先被调用然后调用每一个基类的析构函数。
分析以下实例 如果ClassB中不是虚析构函数类B的对象pB在Delete时只能调用B的析构函数。当ClassB中是虚析构函数时。分析如下 结论:
Ø 带有多态性质基类应该声明一个virtual析构函数。如果类中有任何虚函数那么就应该将该类的析构函数定义成虚函数。
Ø 如果类的设计不是为了作为基类来使用或者不是为了具备多态就不应该声明虚析构函数。