当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 学习笔记 > 嵌入式学习笔记:C++继承的三种方式,用实例教会你

嵌入式学习笔记:C++继承的三种方式,用实例教会你 时间:2018-09-05      来源:未知

c++继承是c里面学习比较难的,在这里告诉你c++继承,从各个方面来给你一一击破难点。让你快速学习。

面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行时间的效果。

当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。

如何实现继承?

一个类可以派生自多个类,这意味着,它可以从多个基类继承数据和函数。定义一个派生类,我们使用一个类派生列表来指定基类。类派生列表以一个或多个基类命名,形式如下:

class derived­class: access­specifier base­class

其中,访问修饰符 access-specifier 是 public、

protected 或 private 其中的一个,base-class 是之前定义过的某个类的名称。如果未使用访问修饰符 access-specifier,则默认为private。

注:

子类也可以称为派生类,父类可以称为基类。

继承后,子类会完全继承父类中所有的成员变量和成员函数(除父类的构造函数以外)

public :公有的成员在任何地方都可以访问

protected:受保护的成员,在类的作用范围内可以访问,友元也可以访问,在其派生类中也可以访问,在类的外部不能访问。

private:私有的成员在类的作用范围内可以访问,友元也可以访问。

一个派生类继承了所有的基类方法,但下列情况除外:

基类的构造函数、析构函数和拷贝构造函数。

基类的重载运算符。

基类的友元函数。

构造和析构的顺序:

子类的构造函数一定会先调用父类的构造函数,先初始化从父类继承而来的成员变量,再调用自己的构造函数初始化新增的成员变量。

析构相反,先调用子类的析构函数释放新增内存,再调用父类的析构函数释放从父类继承而来的部分。

当父类的构造函数没有参数的时候,子类的构造函数可以不主动调用父类的构造函数,但是父类的构造函数依然会被自动调用。

三种继承方式:

1.公有继承 父类的公有成员继承到子类中是公有属性,父类的保护成员继承到子类中是保护属性,父类的私有成员继承到子类中不可访问。

2.保护继承 父类的公有成员继承到子类中是保护属性,父类的保护成员继承到子类中是保护属性,父类的私有成员继承到子类中不可访问

3.私有继承 父类的公有成员继承到子类中是私有属性,父类的保护成员继承到子类中是私有属性,父类的私有成员继承到子类中不可访问

公有成员保护成员私有成员

公有继承公有成员保护成员不可访问成员(通过基类接口访问)

保护继承保护成员保护成员不可访问成员(通过基类接口访问)

私有继承私有成员私有成员不可访问成员(通过基类接口访问)

在类的内部:只有父类的私有成员不能访问。

在类的外部:只能访问该对象的公有成员

多层继承

A继承自B,B继承自C,可以得出,A继承了C,继承具有传递性多重继承

一个类继承自多个父类

如何多重继承?

class 子类名 :public 父类1名, public 父类2名...

{

子类成员....

};

多重继承构造函数的顺序?

一定先从左到右依次调用父类的构造函数,再调用自己的构造函数析构的顺序相反。

多重继承会引发二义性,如何解决?

方法1:在调用具有二义性的成员函数时,指明函数的作用域,到底是从哪个基类继承而来的。

方法2:虚继承

C++使用虚拟继承(Virtual Inheritance),解决从不同途径继承

来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,

将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员

在内存中就只有一个拷贝,同一个函数名也只有一个映射。

继承的关系

has-a 有什么。 组合关系不能构成继承关系 is-a 是什么, 能构成继承关系

like-a 像什么一样 不能构成继承关系 as---a 作为实现手段 不能构成继承关系总结:

当类中有成员变量是其他类的对象的时候,先从上到下依次构造对象成

员,再调用自己的构造函数。

析构的顺序相反。

当类中既有多重继承,又有成员变量是其他类的对象,先从左到右依次调用父类构造函数,再从上到下

依次构造对象成员,最后调用自己的构造函数。

上一篇:嵌入式学习笔记:进程间的通信方式总结

下一篇:嵌入式学习笔记:类与封装基础入门知识分享

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部