C++继承与派生学习笔记

一、基本概念:

继承:子类不加修饰地延续父类的特征
派生:子类在延续父类的同时又添加了新的特征。在原有类的基础上建立新类并且添加新的特征叫做派生。
基类:有绝对基类和相对基类的区分,类似于树的根节点(绝对)与子树的根节点(相对)
派生类:子类又叫派生类
单一继承:只有一个基类的继承(一个父类派生多个子类)
多重继承:拥有多个基类的继承(多个父类派生一个子类)

派生类的声明

派生类共有: class 派生类名:public 父类名
派生类私有: class 派生类名:private 父类名

类可以访问从父类继承过来的公有成员,但是不能访问父类的私有成员

二、派生类的使用:

在创建派生类的构造函数时,有两种方法对数据进行初始化(首先得明确一种关系:访问基类的构造函数的唯一方法就是先访问子类(派生类)的构造函数。而调用子类的构造函数就必定会先调用基类构造函数。区别调用和访问(便于理解)):

1、在派生类中创建一个构造函数,然后初始化所有数据(从基类那里继承来的数据和子类数据)。因为基类中已经有构造函数,重复构造这种方法显得有点繁复冗余。何况在派生类对基类进行初始化的方法也不可取。

2、在派生类中创建一个构造函数,用该构造函数调用基类的构造函数并且向构造函数传递初始值参数,这种方法比第一种效率要高些,并且出错的几率会小些。

普通类中成员的调用(不涉及基类与子类)

类中public成员可以由类的对象直接调用,也可以通过类的publi接口函数调用,但是可以由对象直接调用就没有必要借用接口函数。
类中private成员不可以由类对象直接调用,但是可以由类中public接口函数间接调用。

继承与派生中基类成员的调用(涉及基类与子类)

基类protected成员,在公有派生中和私有派生中,都不可以由子类对象直接调用,但是可以由子类中public接口函数间接调用。
基类中private成员,在公有派生中和私有派生中,子类对象不能通过子类public接口函数间接调用,自然也不能由子类对象直接调用。
基类public成员,在公有派生中,可以由子类的对象直接调用,也可以通过子类的publi接口函数调用,但是可以由对象直接调用就没有必要 借用接口函数。在私有派生中,子类对象只能通过子类的public接口函数调用。

三、总结:

1、无论是在私中还是公有派生中,子类都可以直接访问基类的public和protected成员,但是子类的对象只能直接访问基类的public成员
2、子类的对象能通过子类中的public接口函数访问基类protected成员(实质还是子类对象访问子类中public成员(接口函数),而子类访问 基类protected成员)
3、private成员子类以及子类对象都不可以访问。private成员只能由该类本身访问。

第二种传递参数的方法使用时注意:
(1)、如果没有定义派生类的构造函数,将默认执行基类的构造函数(实质是访问了派生类的默认构造函数,通过派生类的默认构造函数调用了基 类的构造函数)。
(2)、如果需要向基类传递参数,那么必须在基类定义带参数的构造函数,以为向基类传递参数,必须先访问子类构造函数,由子类构造函数将参 数传给基类,如果基类构造函数不带参数(即不定义带参数的子类构造函数,执行默认的子类构造函数),那么基类的参数自然也无法传递到 基类。
(3)、如果只需要调用基类的构造函数,不需要向基类和派生类传递参数,那么派生类的构造函数自然不用定义(直接使用默认的子类构造函数),但是为了使程序输出时整个调用先后顺序更明白,一般也会定义一个不带参数但是有输出提示信息的构造函数。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值