C++面向对象学习(2)--- 继承

在这里插入图片描述

|| 继承的用处:减少重复代码

语法:   class 子类:继承方式 父类 {};

|| 继承方式:

public       --- 公有继承    ---无法访问父类私有成员,其他成员照常继承
protected    --- 保护继承    ---无法访问父类私有成员,其他成员变为保护权限后继承
private      --- 私有继承    ---无法访问父类私有成员,其他成员变为私有权限后继承

|| 继承中构造和析构顺序 (类比以其他类的对象作为一个类的成员变量时的情况)

共同点:被包含在内部的先构造,外部的后构造(先内后外),析构时相反(栈)

继承中构造和析构顺序
	构造顺序:先支类再主类
	析构顺序:先主类再支类(相反)
以其他类的对象作为一个类的成员变量时的情况
	构造顺序:先支类再主类
	析构顺序:先主类再支类(相反)

|| 继承同名成员处理方式(包括静态成员和非静态成员)

问题:当子类与父类出现同名的成员,如何通过子类对象,访问到子类或父类中同名的数据呢?

访问子类同名成员 直接访问即可
访问父类同名成员 需要加作用域

注意事项:访问父类同名的重载函数时,也必须加上作用域来进行访问。(父类中的同名函数
的参数会被编译器隐藏,无法区分重载函数)
	只要是调用父类同名函数,都加上作用域就好

|| 多继承

C++允许一个类继承多个类 (一个儿子可以有多个父亲)
语法: class 子类 :继承方式 父类1 , 继承方式 父类2 {};

|| 菱形继承
菱形继承:

					 [---] 
					/	  \
				[---]	  [---]   近亲杂交
 	                \     /
     	             [---]    

菱形继承的缺点:
1,二义性,需要指出定义域
2,资源浪费,底部的子类一般会有多个重复属性 — 解决办法:虚继承

|| 虚继承 virtual (一般在菱形继承中使用)

语法:	   class 子类 :virtual 继承方式 虚基类(父类){};
		   class 子类 :virtual 继承方式 虚基类(父类){};
		   class 子子类: 继承方式 子类, 继承方式 子类 {};
发布了24 篇原创文章 · 获赞 40 · 访问量 3947

猜你喜欢

转载自blog.csdn.net/a13352912632/article/details/104179878