C++继承
1.C++内存四区2.算法-排序-快速排序3.算法-排序-归并排序4.c++重载5.算法-二分6.算法—前缀和7.算法—差分8.算法-双指针9.c++引用10.c++函数默认参数及占位参数11.c++函数模板12.c++类和对象-封装13.struct和class的区别14.成员属性设置为私有15.C++类和对象-对象特性(1)16.C++类和对象-对象特性(2)17.N皇后18.动态规划dp-01背包问题19.C++类和对象-对象特性(4)20.C++类和对象-对象特性(3)21.C++友元22.C++运算符重载
23.C++继承
24.C++多态25.C++类模板26.C++vector容器27.C++string容器28.C++deque容器29.算法-树状数组30.算法线段树31.算法-bfs32.算法-贪心33.算法-Flood Fill34.数据结构-链表35.数据结构-栈36.数据结构-队列37.P2678 跳石头38.5132139.54440.3213241.牛客寒假算法集训1-总结42.牛客寒假算法集训2-总结43.牛客寒假算法集训3-总结44.数论-质数45.博弈论46.第十四届蓝桥杯省赛C++题解47.Trie树48.并查集49.数据结构-堆50.哈希表51.拓扑排序52.Dijkstra53.spfa54.数论-约数55.数论-欧拉函数56.图的存储和遍历57.牛客寒假算法集训4-总结58.牛客寒假算法集训5-总结59.牛客寒假算法集训6-总结60.Bellman_ford61.Floyd62.编辑距离63.数位dp一.继承
普通实现:
继承实现:
总结:
继承好处:可以减少重复的代码
语法:class A:public B;
A类也称为子类或派生类
B类也称为父类或基类
派生类中的成员,包含两大部分:
- 一类是从基类继承过来的,一类是自己增加的成员
- 从基类继承过来的表现其共性,而新增的成员体现其个性
二.继承方式
语法:class 子类:继承方式 父类
继承方式:
- 公共继承
- 保护继承
- 私有继承
三.继承中的对象模型
父类中继承下来的非静态成员属性都属于子类,父类中的私有属性也会继承下去,只是被编译器阴藏了
可以用开发人员命令工具查看
四.继承中构造和析构顺序
子类继承父类后,当创建子类对象,也会调用父类的构造函数
先构造父类,再构造子类,析构顺序相反
五.继承同名成员处理方式
- 访问子类同名成员 直接访问即可
- 访问父类成员,需要加作用域
- 如果子类中出现和父类同名的成员函数,子类的同名成员会隐藏父类中所有同名成员函数
- 如果想访问父类中隐藏的同名成员函数,需要加父类的作用域
六.继承同名静态成员处理方法
静态成员和非静态成员出现同名,处理方式一致
- 访问子类同名成员 直接访问即可
- 访问父类成员,需要加作用域
同名对象:
同名函数;
总结:同名静态成员处理方式和非静态处理方式一样,只不过两种访问的方式(通过对象和类名作用域)
七.多继承语法
C++一个类继承多个类
语法:class 子类:继承方式 父类1 ,继承方式 父类2...
多继承可能会引发父类中有同名成员出现,需要加作用域区分
C++实际开发中不建议用多继承
八.菱形继承
概念:两个派生类继承同一个基类
又有某个类同时继承着两个派生类
这种继承为菱形继承,或者钻石继承
问题:
- 羊继承了动物的数据,驼同样继承了动物的数据,当草泥马使用数据时,就会产生二义性
- 草泥马继承自动物的数据继承了两份,其实我们应该清楚,这份数据我们只需要一份就可以
利用虚继承解决菱形问题
继承之前加上关键字virtual
最大类称虚基类
总结:
- 菱形继承带来的问题是子类继承两份相同的数据,导致资源浪费以及毫无意义
- 利用虚继承可以解决菱形继承问题
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析