首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
C++之继承和派生
时间:
2021-04-05 12:18:46
阅读:
0
评论:
0
收藏:
0
[点我收藏+]
标签:
二义性
位置
强制
概念
void
析构函数
覆盖
虚继承
无法
继承
继承和派生是相对的,继承指的是子类(派生类)继承父类(基类)。派生指的是父类(基类)传承自己的 "家业"给子类(派生类)
三种方式(指的是权限public,protected,private)对继承自基类内容的权限只能小于等于继承方式
覆盖问题,子类同名函数或者变量会覆盖父类,不存在重载方式。如果想访问父类的被覆盖内容,需要加 域解析符
继承时,变量在内存中按照基类->子类->声明顺序在内存中增长存储
产生二义性的时候,要加域解析符
构造函数
不管是声明还是定义,函数名前面都不能出现返回值类型,即使是 void 也不允许
无法继承,构造函数初始化顺序和基类的声明定义顺序有关,和初始化列表的位置无关
在子类构造函数初始化时,只能调用直接基类的构造函数,不能调用间接基类的。防止重复初始化
执行顺序,先执行基类的,再执行子类
析构函数
析构函数没有参数,不能被重载,因此一个类只能有一个析构函数。如果用户没有定义,编译器会自动生成一个默认的析构函数。
无法继承,与构造函数不同的是,在派生类的析构函数中不用显式地调用基类的析构函数,因为每个类只有一个析构函数,编译器知道如何选择,无需程序员干涉
执行顺序,先执行子类的,再执行基类的,即后构造的先析构
虚继承
为了解决多继承(菱形继承)成员变量存在多分拷贝的问题(会发生二义性以及命名冲突等问题)
继承时加上virtual关键字即为虚继承,被虚继承的基类将共享成员(这对被继承的基类没有影响)
虚继承在VC中还引入了"虚表"概念,虚表就是一个数组,维护了一些基类的相对于当前对象的地址偏移
虚基类的对象成员总是被放在内存模型的最后,有共享特性
转换(对象,指针,引用)
子类向父类转换(向上转换)无需额外操作
父类向子类强制转换(危险)需要手动操作(dynamic_cast关键字),参考类型截断
C++之继承和派生
标签:
二义性
位置
强制
概念
void
析构函数
覆盖
虚继承
无法
原文地址:https://www.cnblogs.com/ming-fei/p/14612842.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!