首页 > 编程语言 > 详细

C++之继承和派生

时间:2021-04-03 09:18:37      阅读:20      评论:0      收藏:0      [点我收藏+]

继承

  • 继承和派生是相对的,继承指的是子类(派生类)继承父类(基类)。派生指的是父类(基类)传承自己的 "家业"给子类(派生类)
  • 三种方式(指的是权限public,protected,private)对继承自基类内容的权限只能小于等于继承方式
  • 覆盖问题,子类同名函数或者变量会覆盖父类,不存在重载方式。如果想访问父类的被覆盖内容,需要加 域解析符
  • 继承时,变量在内存中按照基类->子类->声明顺序在内存中增长存储
  • 产生二义性的时候,要加域解析符

构造函数

  • 不管是声明还是定义,函数名前面都不能出现返回值类型,即使是 void 也不允许
  • 无法继承,构造函数初始化顺序和基类的声明定义顺序有关,和初始化列表的位置无关
  • 在子类构造函数初始化时,只能调用直接基类的构造函数,不能调用间接基类的。防止重复初始化
  • 执行顺序,先执行基类的,再执行子类

析构函数

  • 析构函数没有参数,不能被重载,因此一个类只能有一个析构函数。如果用户没有定义,编译器会自动生成一个默认的析构函数。
  • 无法继承,与构造函数不同的是,在派生类的析构函数中不用显式地调用基类的析构函数,因为每个类只有一个析构函数,编译器知道如何选择,无需程序员干涉
  • 执行顺序,先执行子类的,再执行基类的,即后构造的先析构

虚继承

  • 为了解决多继承(菱形继承)成员变量存在多分拷贝的问题(会发生二义性以及命名冲突等问题)
  • 继承时加上virtual关键字即为虚继承,被虚继承的基类将共享成员变量(这对被继承的基类没有影响)
  • 虚继承在VC中还引入了"虚表"概念,下一章将详细分析虚表是什么

转换(对象,指针,引用)

  • 子类向父类转换(向上转换)无需额外操作
  • 父类向子类强制转换(危险)需要手动操作(dynamic_cast关键字),参考类型截断

C++之继承和派生

原文:https://www.cnblogs.com/ming-fei/p/14612842.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!