作者:gzshun. 原创作品,转载请标明出处!
来源:http://blog.csdn.net/gzshun
这几篇博文非常的基础,基础得真不知道如何形容,如果您是大牛请略过,这只是一个C++最基础部分的总结罢了。
开始学习类的继承,其实这些以前都学过了,也都用过,只是最近用自己的例子与语言总结下来,把这些特性用非常容易的例子来说明。有些书经常把某些简单的知识复杂化,而且很罗嗦,浪费脑细胞,我只是把自己觉得最基础也最重要的部分提取出来而已。最近得抓紧时间了,需要学的东西太多了。
一、继承的概念
继承是面向对象语言的一个重要机制,通过继承可以在一个一般类的基础上建立新类。被继承的类成为基类,在基类上建立的新类称为派生类,太儿戏了,哈哈。
单继承:一个类只有1个基类
多继承:一个类有2个或2个以上的基类
二、继承的格式
1.单继承
class <派生类名> : <继承方式> <基类名>
{
<派生类的成员>
};
2.多继承
class <派生类名> : <继承方式1> <基类名1>, <继承方式2> <基类名2>
{
<派生类的成员>
};
3.补充--默认继承的保护级别
a.class关键字定义的派生类默认是private继承
b.struct关键字定义的派生类默认是public继承
这与之前介绍过的class与struct的区别是一样的,在struct声明类中,默认是public访问级别,而class声明的类中,默认是private访问级别。
class的例子:
下面继承的关系等价于:class CDerived : private CBase
class CBase
{
...
};
class CDerived : CBase
{
...
};
struct的例子:
下面继承的关系等价于:struct CDerived : public CBase
struct CBase
{
...
};
struct CDerived : CBase
{
...
};
三、不同继承方式的基类特性与派生类特性
下面给一个表,是一个继承的规则,基本上必须要熟记,用几次就熟练了。
四、公有继承的例子
在公有继承中,
1.派生类的对象可以访问基类中的公有成员;
2.派生类的成员函数可以访问基类的公有成员和保护成员。
执行结果:
小狗的名字是:Tom
动物的名字是:Tom
小狗的新名字是:Wali
动物的新名字是:Wali
小狗的名字是:Wali
五、私有继承的例子
在私有继承中,
1.派生类的对象不可以访问基类中的所有成员;
2.派生类的成员函数可以访问基类的公有成员和保护成员。
以下的例子跟公有继承的例子差不多,只是将几行代码给注释掉了,被注释掉的都是因为private方式的继承不能调用成功,都是错误的。
执行结果:
小狗的名字是:Tom
小狗的新名字是:Wali
六、保护继承的例子
保护继承的例子跟私有继承的例子是一样的,规则差不多。
在保护继承中,
1.派生类的对象不可以访问基类中的所有成员;
2.派生类的成员函数可以访问基类的公有成员和保护成员。
七、对上述例子的总结
派生类对象和派生类中的成员函数对基类的访问不同。
在公有继承中,
1.派生类的对象可以访问基类中的公有成员
2.派生类的成员函数可以访问基类的公有成员和保护成员。
在私有继承和保护继承中,
1.派生类的对象不可以访问基类中的所有成员
2.派生类的成员函数可以访问基类的公有成员和保护成员。
八、友元关系与继承
友元关系不能被继承。基类的友元对派生类的成员没有特殊访问权限,例如在CBase中声明了一个友元类CFriend,由CBase类派生出CDerived类,在CFriend类中,可以访问基类CBase中的所有成员和派生类CDerived中属于CBase部分的成员,看例子:
被注释掉的是错误的,不能访问派生类中自己的部分成员,而可以访问派生类中属于基类的部分成员。
九、静态成员与继承
之前说过,在一个类的所有对象中,静态成员只保存了一个副本,不属于对象的成员,所有对象共享同一个static成员。
在继承过程中,原理也是一样。若基类定义了static成员,则在整个继承层次中只有一个静态成员。所以无论从基类派生出多少个派生类,声明了多少对象,每个static成员只有一个实例。
看个例子:
执行结果:
CBase: mStatic = 2
CDerived: mStatic = 2
CBase: mStatic = 4
CDerived: mStatic = 4
十、继承过程中,构造函数与析构函数的调用
派生类与基类的构造函数和析构函数的调用顺序,写个小例子便可知分晓:
执行结果:
调用基类的构造函数
调用派生类的构造函数
调用派生类的析构函数
调用基类的析构函数
顺序是:基类的构造函数 -> 派生类的构造函数 -> 派生类的析构函数 -> 基类的析构函数
分享到:
相关推荐
介绍c++中的继承-派生类,适合C++初学者。
本资源是C++继承与派生类实验报告,欢迎大家下载阿!
内容概要:继承及派生类的设计及应用 ;设计一个员工管理系统,实现各类员工的增删改查等操作。 在代码中实现了简单的菜单系统,二重菜单功能实现,并进行了简单的美化;具体功能有,打印所有雇员信息,插入新雇员,...
C++面向对象程序设计实验3继承与派生 需要的哦朋友可以下载
c++程序设计 继承与派生实验(二) 1. 进一步掌握类的派生与继承的概念、应用方法 2. 掌握继承方式对成员访问权限的影响 3. 掌握虚基类的用法
c++课件 派生类与继承
C++课程-4_继承与派生 C++课程-4_继承与派生
C++实验三继承和派生类附答案.doc
C++第8章_继承-派生类
C++-类的继承和派生PPT课件.ppt
C++实验五 继承与派生的应用 课程 实验报告 作业参考的良品!
c++程序设计第十一章继承和派生类
这是张图谱,是关于c++中类的继承派生关系图谱,从基类cobject到各个类!
从bicycle和motorcar派生出motorcycle,观察虚基类对继承的影响。 定义一个motorcycle的对象,分别调用run()和stop(),观察构造/析构函数的调用情况。 注意:构造函数和析构函数中均为cout语句,说明哪个构造/析构...
c++派生类继承构造函数方法!!!!!!!!!!!
C++继承与派生课件 很值得下载 C++继承与派生课件 很值得下载
c++类的继承与派生--实验报告.doc
以此雇员类为基类,从中派生出教师类,其中要求在教师类中加入一个计算教师工资的方法,教师工资=基本工资(1000)+课时(月工作量)×30。以此雇员类为基类,从中派生出实验员类,其中要求在实验员类中加入一个计算...
包括所有的有关类的继承和派生的教程,有很多优秀的源代码,呵呵,自己看看就知道了;
c++中继承与派生的实验报告,很详细,有源代码