• 为什么基类析构函数最好要使用 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类中的析构函数。

  • 派生类重新定义基类中的虚方法 规则

    1. 确保与原来的类型完全相同(参数、参数类型、参数顺序、方法名), 如果方法返回类型为基类指针或引用则将其改为指向派生类指针或引用。
class A {
......
public:
A() {}
~A() {}
virtual A *getInstance();
};
class B public A {
......
public:
B() {}
~B() {}
virtual B *getInstance();
};
2. 如果基类中的虚方法被重载,则在派生类中应重新定义全部重载版本,否则将隐藏其他版本。
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);
};

最新文章

  1. Genymotion安装及遇到的问题
  2. 一个很奇怪的问题,程序没有改动加密参数应该也没有变化.但是两次的加密结果却不一致.md5加密问题
  3. tornado 反向代理后 获取真实客户端IP
  4. STL容器
  5. js中各种跨域问题实战小结(一)
  6. 《Java程序设计》第五次实验实验报告
  7. IIC总线协议---以存储芯片at24c64为例
  8. JS 实现 startWith endWith函数
  9. Js之Screen对象
  10. linux 内核协议栈收报流程(二)Netfilter全貌
  11. 如何卸载CentOS自带的apache
  12. [转载]binlog归档
  13. SQL中MAX()
  14. c语言第五次作业--函数
  15. ProgressBar的简单使用
  16. Python使用Socket写一个简单聊天程序
  17. Vue 无限滚动加载指令
  18. GTID做mysql主从时报错
  19. bitset相关
  20. iOS 为什么使用xcode8上传app包到appStore无法构建版本

热门文章

  1. VS 无法调试 IIS
  2. 【数学建模】MATLAB学习笔记——函数式文件
  3. 深度学习3--caffe的安装(only CPU)
  4. UI控件之UIScrollView
  5. Linux Shell基础 管道符和grep命令
  6. 【HackerRank】Manasa and Stones
  7. STM32探秘 之FSMC
  8. FullPage.js全屏滚动插件
  9. JAVAWeb学习总结(3)
  10. 微信内置浏览器和小程序的 User Agent 区别及判断方法