C++篇之继承与多态

C++篇之继承与多态

类的继承:

	对于public中的成员来书说,可以建立一个对象在外面被访问,也可以在子类中被访问,对于
public中的成员来书说,可以建立一个对象在外面被访问,也可以在子类中被访问,对于
protected成员来说,只能再自己的类的内部被访问和在子类 的内部被访问,而不能在外面定义一个
对象去调用,对于private成员来说,在子类中也不能被访问只能在自己类的内部被访问。


公有继承:
	它所继承过来的基类的成员public仍然保持着public,protected仍然保持着protected,private成员	
它所继承过来的基类的成员public仍然保持着public,protected仍然保持着protected,private成员
子类是不能访问的。子类是不能访问的。
保护继承:
	public和protected成员到子类当中变成了protected,private成员子类是不能访问的。public和
protected成员到子类当中变成了protected,private成员子类是不能访问的。
私有继承:
	public和protected成员到子类当中变成了private,private成员子类是不能访问的。public和
protected成员到子类当中变成了private,private成员子类是不能访问的。

子类对象的内存布局

	子类对象的首地址和基类对象的首地址都是一样的,Fish对象的首地址也是Animal对象的首地址
	Fish是从Animal继承过来的,先构造Animal对象再构造Fish对象剩余部分,把Fish对象的地址取
	出来转换成Animal对象的指针是完全可以的,他们的内存模型是匹配的,当定义一个基类的指针
	再把子类对象的地址赋给基类的指针时,再用这个指针调用子类和基类都有的函数时,调用的是
	基类的函数,如果基类没有再调用子类的函数,如果子类和基类都有想调用子类的这个函数,在
	基类的这个函数前加上virtual也行。

多态性:

		C++中的虚函数的作用主要是实现了多态的机制。关于多态简而言之就是用父类类型的指针
		指向子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指
		针有“多种形态”
		当C++编译器在编译的时候,发现Animal类(基类)的breath()函数是虚函数,这个时候
		C++编译器就会采用迟邦定(late binding)的技术,在运行时依据对象的类型,来确认调用的
		是哪一个函数,这种能力就叫做C++的多态性。
		早绑定是在编译的时候调用哪一个函数就已经确定了,如果是迟邦定是在运行时根据对象的
		类型再确定是哪一个函数并进行调用。
		一句话总结就是:我们在基类的函数前加上一个virtual把他变成一个虚函数之后,如果说子类
		有的函数就调用子类的,如果子类的没有就调用分类 的,前提条件是传递的子类的地址。
		(在程序中我们传递的是Fish类(Animal的子类)的对象的地址)
		注意:
		必须为多态基类声明virtual的析构函数,但构造函数不能virtual。因为通过基类的指针析构子类
		的对象,只会调用基类的析构函数u,不会调用子类的析构函数,会产生资源的泄露,所以需
		要在析构函数前加上virtual。		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值