2020-02-12

C++继承与派生

派生新类的过程包括吸收基类成员,改造基类成员,添加新的成员三个过程
派生类的定义:class 派生类名:继承方式 基类名1,继承方式 基类名2
单继承:派生类只从一个基类中产生
多继承:派生类从多个基类中产生
多重派生:一个基类产生多个派生类
多层派生:派生类又作为基类产生新的派生类
继承与派生的主要目的是为了实现代码重用与扩充基类的构造函数与析构函数不能被继承
隐藏是指在派生类中声明一个与基类数据或函数(如果是同名函数,则函数的参数表要相同,不同属于重载)同名的成员
C++的继承性允许派生类继承基类的所有特性,并允许增加新的特性或重定义基类的特性,但是基类的构造函数与析构函数派生类无法继承;
一个类中可以有多个构造函数但是一个类只能有一个析构函数,析构函数没有返回值类型,没有参数公有继承:①基类的public和protected成员的访问属性在派生类中保持不变,但是基类的private成员不可以访问②派生类的成员函数可以直接访问基类的public和protected成员,但是不能访问基类的private成员③通过派生类的对象只能访问基类的public成员
public继承方式
基类中所有 public 成员在派生类中为 public 属性;基类中所有 protected 成员在派生类中为 protected 属性;基类中所有 private 成员在派生类中不能使用
私有继承①基类的public和protected成员都以private身份出现在派生类中,但是基类的private成员不可访问②派生类的成员函数可以直接访问基类的public和protected成员,但是不能访问基类的private成员③通过派生类的对象不能访问基类的任何成员
private继承方式基类中的所有 public 成员在派生类中均为 private 属性;基类中的所有 protected 成员在派生类中均为 private 属性;基类中的所有 private 成员在派生类中不能使用
保护继承①基类的public成员和protected成员都以protected身份出现在派生类中,但是基类的private成员不可访问②派生类的成员函数可以直接访问基类中的public和protected成员,但是不能访问基类的private成员③通过派生类的对象不能访问基类中的任何成员
protected继承方式:基类中的所有 public 成员在派生类中为 protected 属性;基类中的所有 protected 成员在派生类中为 protected 属性;基类中的所有 private 成员在派生类中不能使用。
基类的公有成员在派生类中的访问权限由继承方式决定
单继承:派生类只能从一个基类中派生;
多继承:派生类从多个基类中派生
多重派生:由一个基类派生出许多不同的派生类
多层派生:派生类又作为基类,继续派生新的类
类的访问控制权限,如果没有使用关键字说明,一般默认为私有(private)权限
类的初始化复制构造函数是:类名(类名&)
函数原型是指:返回值类型 函数名(参数类型 参数1 。。。。。。)函数原型不能表示函数的功能
决定C++语言中函数的返回值类型的是:在定义该函数时所指定的数据类型
内联函数:功能不太复杂,但要求频繁调用
重载函数必须有不同的形参列表
类型兼容规则是指在任何需要基类对象的地方,都可以用派生类对象替代
派生类的对象乐意隐含转换为基类的对象
派生类对象可以初始化基类的引用
派生类对象的地址也可以隐含转换为指向基类的指针
构造派生类的对象时,要对基类的成员对象和新增的成员对象进行初始化
派生类构造函数的语法派生类名::派生类名(参数表):基类名1(基类1初始化参数列表),成员对象名1(成员对象1的初始化参数列表)
派生类构造函数的调用顺序①调用基类的构造函数,调用顺序按照他们被继承时候声明的顺序②对派生类新增成员对象进行初始化,调用顺序按照他们在类中声明的顺序③执行派生类构造函数函数体内容
派生类析构函数的调用顺序与派生类构造函数的调用顺序相反
虚基类的声明:class 派生类名: virtual 继承方式 基类名
C++的继承性允许派生类继承基类的所有特性,并允许增加新的特性或重定义基类的特性
派生类是基类的具体化
派生类是基类定义的延续
派生类是基类的组合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值