C++继承细节 -1
程序员文章站
2022-06-30 18:58:29
为什么基类析构函数最好要使用 virtual 进行修饰? 执行 后,如果A类中的析构函数为虚函数;则先调用B类中的析构函数在调用A类中的析构函数;否则只调用A类中的析构函数。 派生类重新定义基类中的虚方法 规则 1. 确保与原来的类型完全相同(参数、参数类型、参数顺序、方法名), 如果方法返回类型为 ......
-
为什么基类析构函数最好要使用 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); };
-
上一篇: 《机械姬》剧本顾问谈人工智能
下一篇: Java反射的两种使用方法