李玟年龄,星河创服coo李元戎,付贞怡
为什么基类析构函数最好要使用 virtual 进行修饰?
class A { private: ...... public: ~A(); A() {} }; class B : public A { private: ...... public: ~B(); B() {} }; A *aPtr = new B;
执行delete aPtr
后,如果A类中的析构函数为虚函数;则先调用B类中的析构函数在调用A类中的析构函数;否则只调用A类中的析构函数。
确保与原来的类型完全相同(参数、参数类型、参数顺序、方法名), 如果方法返回类型为基类指针或引用则将其改为指向派生类指针或引用。
class A { ...... public: A() {} ~A() {} virtual A *getInstance(); }; class B public A { ...... public: B() {} ~B() {} virtual B *getInstance(); };
如果基类中的虚方法被重载,则在派生类中应重新定义全部重载版本,否则将隐藏其他版本。
class A { ...... public: A() {} ~A() {} virtual A *getInstance(); virtual A *getInstance(int a); virtual A *getInstance(double d); }; class B public A { ...... public: B() {} ~B() {} virtual B *getInstance(); virtual B *getInstance(int a); virtual B *getInstance(double d); };
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论