1.对于非虚函数,是不希望派生类对该函数重新定义;

对于virtual函数,在父类已经有默认定义后,并希望子类重新定义它;

对于pure virtual函数,父类没有默认定义,派生类必须要重新定义它;

2.当有继承和复合下的构造和析构的运作:

1)当派生类里有复合的情况下,构造顺序会是什么样的呢?

#include <bits/stdc++.h>
using namespace std; class A {
public:
A() { cout << "A\n"; }
}; class B {
public:
B() { cout << "B\n"; }
}; class C : public A {
public:
C() { cout << "C\n"; } protected:
B b;
}; int main() {
C c;
return 0;
}

我很简单的写了下代码,不管规范问题,实际运行的结果是ABC,就是先执行父类的构造,再复合的构造,再自己的,也就是如上方右图所示,父类在上面;

2)当父类里有复合的情况,又是如何构造呢?

#include <bits/stdc++.h>
using namespace std; class B {
public:
B() { cout << "B\n"; }
}; class A {
public:
A() { cout << "A\n"; } protected:
B b;
}; class C : public A {
public:
C() { cout << "C\n"; }
}; int main() {
C c;
return 0;
}

执行结果为BAC,符合由内而外的形式,如上图右方所示;

析构根据由外而内来执行,不写了;

3.委托和继承

....

最新文章

  1. FileItem类的常用方法
  2. vim 标记 mark 详解 (转载)
  3. CSS3硬件加速需要注意的事项
  4. (35)odoo中widget
  5. hdu 1269 迷宫城堡 强连通分量
  6. How to delete expired archive log files using rman?
  7. HDU 5795:A Simple Nim(博弈)
  8. 将表A的数据复制到表B,以及关于主表和子表的删除办法
  9. C指针(转)
  10. linux 下apache2 安装
  11. OpenGL shader渲染贴图
  12. Pytorch系列教程
  13. Python网络爬虫-信息标记
  14. [Swift]LeetCode906. 超级回文数 | Super Palindromes
  15. redis持久化和主从同步
  16. C#操作DbConnection类
  17. Html5、css、JavaScript基础
  18. 使用Spring-data-jpa(2)(三十一)
  19. 《DSP using MATLAB》Problem5.16
  20. vue-cli 3.x 使用

热门文章

  1. C#Lambda表达式演变和Linq的深度解析
  2. PHP,javascript实现大文件上传
  3. python编程思想及对象与类
  4. 云图说丨初识华为云微服务引擎CSE
  5. MybatisPlus高级特性
  6. 大家都能看得懂的源码 - ahooks useSet 和 useMap
  7. Java SE 18 新增特性
  8. Dreamweaver8 网站制作软件使用教程
  9. Swift中的Result 类型的简单介绍
  10. 在Apache Cassandra数据库软件中报告高严重性RCE安全漏洞