[C++]——继承、赋值兼容规则与组合

继承

C++的三大特性之一——继承,继承是类与类之间的一种关系。说到继承,就不得不提及两个概念:一个是父类(又称基类),一个是子类(又称派生类)。如同孩子继承父母的财产一样,子类会继承父类中的方法(函数)与成员。

为什么要有继承?

继承的本质是将父类的内容(函数与成员)继承到子类当中去,但子类不仅拥有父类内容还包含自己特有的内容(函数与成员)。
举个例子:人类可以吃穿住行,是一个大体的概念;学生是人类的一种具体体现,学生除了吃穿住行以外,还具备上学,学习,写作业等行为,此时利用继承实现一定程度上减少了代码的复用,但是打破了类的封装性。

继承是如何实现的?

在这里插入图片描述
代码示例:

class People
{
	public:
		......
	private:
		......	
}
class Student : public People
{	
	public:
		......
	private:
		......
}

注意: 父类中的私有成员或保护成员子类都不能直接访问,若要访问,需通过A的公有方法(公有函数)。
例如:
在这里插入图片描述
正确访问方式:
正确访问方式:
在这里插入图片描述
运行结果:在这里插入图片描述

赋值兼容规则

赋值兼容规则的内容

  1. 子类对象可以给父类对象赋值(向上转换)
  2. 子类地址可以赋给父类指针
  3. 子类对象可以初始化父类引用

在这里插入图片描述

为什么两个类型不同的变量可以实现赋值呢?(赋值兼容规则原理)

因为子类实例化一个对象时,子类对象不仅包含自己的成员还包含父类成员,详见下图:
在这里插入图片描述

继承中的特殊函数(友元函数、静态成员函数)

  1. 友元函数不能被继承
    举个生活中的例子,孩子可以继承父母财产,但不能继承父母朋友的财产。友元函数相当于父类的朋友,不能被继承。
  2. 静态成员函数在父类中定义,而且必须是公有方法;静态成员函数在类外初始化。

组合

组合和继承一样,都是C++中的特有属性。

什么是组合

A类作为B类的一个成员类型出现,就叫做组合。
举例如下:
在这里插入图片描述

组合的优缺点

优点:

  1. 容器类仅能通过被包含对象的接口来对其进行访问,封装性好 。
  2. 实现上的相互依赖性比较小
    每一个类只专注于一项任务。

缺点:

  1. 容易导致系统中的对象过多。
  2. 为了将多个不同的对象作为组合块来使用,接口定义需仔细。
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值