C++支持单继承和多继承,并提供3类继承:public、private及protected。在public继承中,每个派生类对象都是基类对象,反之基类对象却不是派生类对象。派生类成员无法直接访问基本的private成员,只能通过继承的public成员访问,但private基类成员仍然得到了继承(被视为派生类的一部分)。友元函数是不被继承的。

  基类的protected成员可以由基类所派生的类和友元访问。

#include” Employee.h”
class Manage : public Employee
{…..}; Manage ::Manage(const string& name, const string& ssn, double rate)
: Employee(name, ssn) //调用基类构造函数初始化
{……}

  派生类构造函数使用成员初始化器将参数传递给基类的构造函数。C++要求派生类构造函数调用其基类的构造函数来初始化继承到派生类的基类的数据成员。若不显式调用,C++将尝试调用基类的默认构造函数,当基类不提供默认构造函数时,将产生编译错误。

  把基类数据成员声明为protected将节省调用函数设置继承的数据成员的开销。但将产生2个问题:安全性降低;派生类的成员函数的实现可能太依赖基类的实现,当基类中protected数据成员修改时,所有派生类中直接使用此数据成员的地方全部要改。如果可能的话,应尽量避免在基类中包含protected数据成员。

  重定义基类中的成员函数后,可以使用基类::成员函数名调用基类的成员函数(否则有可能造成对自身的无限递归调用)。

  派生类的对象被创建时,先调用并执行基类的构造函数,然后执行派生类的构造函数。派生类对象析构函数调用顺序,与相应的构造函数的调用顺序正好相反。派生类不会继承基类的构造函数、析构函数和重载的赋值运算符,但派生类的构造函数、析构函数和重载的赋值运算符可以调用基类的构造函数、析构函数和重载的赋值运算符。

最新文章

  1. webpack 往右一点之 “你好,初次见面”
  2. 默认构造方法并非总是public的
  3. 制作U盘启动盘及安装操作系统的方法
  4. IntelliJ IDEA中配置reportNG
  5. memmove函数
  6. 关于Redis
  7. javascript笔记整理(回调、递归、内置顶层函数)
  8. 任务调用及远端管理(基于Quartz.net)
  9. linux系统性能监控--网络利用率
  10. module.exports与exports区别
  11. [Swift]LeetCode817. 链表组件 | Linked List Components
  12. Linux----------Openssh介绍以及用法
  13. Python3学习之路~5.13 re模块 正则表达式
  14. 入手Docker容器注意事项:命令结束容器退出
  15. JAVA8流操作
  16. Spring Security 与 OAuth2 介绍
  17. 开发openfire 消息拦截器插件PacketInterceptor
  18. Python -- Scrapy 框架简单介绍(Scrapy 安装及项目创建)
  19. 前端-BootStrap
  20. Python 运行 Python hello.py 出错,提示: File "<stdin>" , line 1

热门文章

  1. [JavaWeb基础] 016.Struts2 国际化配置
  2. 2020年,为什么我们应该使用abapGit代替SAPLink
  3. burpsuite 2.0beta体验
  4. 【MobileNet-V1】-2017-CVPR-MobileNets Efficient Convolutional Neural Networks for Mobile Vision Applications-论文阅读
  5. 如何减小SRAM读写操作时的串扰
  6. 最好用的FTP工具,最好用的FTP工具推荐!
  7. 从按下url到显示页面
  8. Spring Boot笔记(五) SpringBoot 集成Lombok 插件
  9. Java实现 LeetCode 1162 地图分析(可以暴力或者动态规划的BFS)
  10. Java实现 蓝桥杯 算法提高 周期字串