(1)继承是创建一个具有某个类的属性和行为的新类的能力。原有的类称为基类,新创建的类称为派生类。派生类将基类中的所有成员作为自己的成员,同时派生类本身可以定义新的成员
(2)派生类只有一个基类的继承称单重继承,简称单继承。派生类具有两个或两个以上的基类的继承称为多重继承,简称多继承。C++语言支持单继承,又支多继承
(3)派生类有3种继承方式:公有继承( public)、私有继承( private)和保护继承( protected)。不同的继承方法中,基类成员在派生类中的访问权限是不同的。3种继承方式中,基类的私有成员在派生类中都是不可见的。公有继承时,基类中公有成员和保护成员在派生类中仍然是公有成员和保护成员;私有继承时,基类中公有成员和保护成员在派生类中都是私有成员;保护继承时,基类中公有成员和保护成员在派生类中都是保护成员。
(4)构造函数不能够继承。因此,派生类的构造函数必须通过调用基类的构造函数来初始化基类的对象。派生类构造函数格式如下
<派生类名>(<派生类构造函数总参数表>):<基类构造函数名>(<参数表1>),…,<子对象名>(<参数表n>)
{
<派生类中数据成员初始化>
}
其中,<派生类名>即为派生类的构造函数名
派生类的构造函数中应包含基类构造函数,子对象类构造函数以及派生类本身构造函数
如果派生类中有默认构造函数,则该默认构造函数将自动包含有基类的默认构造函数
(5)一个特定的类型,当且仅当它至少提供了另一个类型的行为时,则称该类型是另个类型的子类型。这是类型之间的特殊和一般的关系。在公有继承方式下,派生类是基类的子类型,反之不然
6)赋值兼容规则如下
①派生类对象可以赋给基类对象;
②派生类对象可以初始化基类对象的引用;
派生类对象的地址值可赋给指向基类对象的指针。
上述规则的基础是派生类是基类的子类型。
(7)多继承的构造函数的成员初始值表中要包含多个基类的构造函数。对多个基类的构造函数的执行顺序取决于定义多继承时,派生类名后面给定的多个基类名的顺序
(8)多继承通常会在下述两种情况下出现二义性:
①访问不同基类中的相同成员时,可能出现二义性
②访问共同基类中的成员时,可能出现二义性。
避免二义性的方法通常使用成员名限定法。
(9)虚基类是消除公共基类引起二义性的最好方法。说明虚基类的关键字是virtual
其格式如下
class<派生类名>: virtual<继承方式><基类名>
(10)虚基类的间接派生类的构造函数的成员初始值表中要含有公共基类的构造函数,这时虚基类构造函数优先执行,并且仅被执行一次

(11)当对象被删除时,派生类的析构函数被执行,由于析构函数也不能被继承,先执行派生类的析构函数,在执行基类的析构函数,顺序与执行构造函数相反

C++基础之继承类和派生类的更多相关文章

  1. 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成员)

    [源码下载] 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成 ...

  2. c++ 的类 和 类继承, 什么是c++中的基类和派生类?

    闲云潭影日悠悠,物换星移几度秋 你既然已经做出了选择, 又何必去问为什么选择.鬼谷绝学的要义, 从来都不是回答, 而是抉与择 普通类 #ifndef TABTENN0_H_ #define TABTE ...

  3. C++//菱形继承 //俩个派生类继承同一个基类 //又有某个类同时继承俩个派生类 //成为 菱形继承 或者 钻石 继承//+解决

    1 //菱形继承 2 //俩个派生类继承同一个基类 3 //又有某个类同时继承俩个派生类 4 //成为 菱形继承 或者 钻石 继承 5 6 #include <iostream> 7 #i ...

  4. c++中基类与派生类中隐含的this指针的分析

    先不要看结果,看一下你是否真正了解了this指针? #include<iostream> using namespace std; class Parent{ public: int x; ...

  5. C++学习21 基类和派生类的赋值

    在C/C++中,经常会发生数据类型转换,例如整型数据可以赋值给浮点型变量,在赋值之前,先把整型数据转换为浮点型:反过来,浮点型数据也可以赋值给整型变量. 数据类型转换的前提是,编译器知道如何对数据进行 ...

  6. C++:基类与派生类对象之间的赋值兼容关系

    4.5 基类与派生类对象之间的赋值兼容关系 在一定条件下,不同类型的数据之间可以进行类型转换,例如可以将整型数据赋给双精度型变量. 在赋值之前,先把整型数据转换为双精度型数据,然后再把它双精度型变量. ...

  7. C++:基类和派生类

    4.1 派生类的声明 继承实例如下: class Person{ //声明基类Person public: void print() { cout<<"name:"&l ...

  8. C++基类和派生类之间的转换

    本文讲解内容的前提是派生类继承基类的方式是公有继承,关键字public 以下程序为讲解用例. #include<iostream> using namespace std; class A ...

  9. Java基类和派生类

    背景:对基类和派生类有更清晰的认识. 从外部看来,派生类是一个与基类具有相同接口的新类,或许还会有一些额外的的方法和域 .但继承并不仅仅是类的复用.当创建了一个派生类的对象时,该类包含了一个基类的子对 ...

随机推荐

  1. springmvc接受表单多条数据的值

    点击下面链接查看具体内容: http://blog.csdn.net/lutinghuan/article/details/46820023

  2. php简单实现通讯录采集,我的第一个php,适合新手

    起源于要整理通讯录,原先用的是文件调查,现在学了php,就自己试一下.程序短小精悍,适于学习.有两个文件,bj.html用于显示和采集表单信息.bj.php用于处理数据和反馈结果.突出之处在于可以上传 ...

  3. Myeclipse中集成的SVN的登录名与密码的切换方法

    Eclipse的SVN插件Subclipse做得很好,在svn操作方面提供了很强大丰富的功能.但到目前为止,该插件对svn用户的概念极为淡薄,不但不能方便地切换用户,而且一旦用户的帐号.密码保存之后, ...

  4. AngularJS学习笔记(三) 单页面webApp和路由(ng-route)

    就我现在的认识,路由($route)这个东西(也许可以加上$location)可以说是ng最重要的东西了.因为angular目前最重要的作用就是做单页面webApp,而路由这个东西是能做到页面跳转的关 ...

  5. Java微信开发_Exception_03_errcode:48001 errmsg:api unauthorized hint

    创建菜单时出现这个异常, 异常信息:errcode:48001 errmsg:api unauthorized hint 解读:调用的接口没有权限. 回去公众号后台一看,发现真的没有自定义菜单的权限, ...

  6. nodejs buffer 总结

    JavaScript 语言自身只有字符串数据类型,没有二进制数据类型.Buffer 类,该类用来创建一个专门存放二进制数据的缓存区. 一个 Buffer 类似于一个整数数组,但它对应于 V8 堆内存之 ...

  7. leetcode 205. Isomorphic Strings(哈希表)

    Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the chara ...

  8. Android的缓存图片不在系统图库中显示的解决办法

    Android的图库会在开机的时候扫描SD卡中的图片,视频等文件,有很多App的私有图片不想在图库中显示,就需要另外处理了. 解决办法:在缓存图片的文件夹中创建 .nomedia 文件. 1. &qu ...

  9. win32 获取 HotKey 控件中的内容(HKM_GETHOTKEY)

    windows给我们提供了一个对话框控件HotKey非常好用,在设置热键的时候用起来很爽,但是一直百度就是没找到在win32下怎样通过消息获取这个控件里面的内容,找到的都是用MFC封装好的控件类来操作 ...

  10. vs2015解决fopen、fscanf 要求替换为fopen_s、fscanf_s的办法

    在工程项目设置一下就行:项目属性 -- C/C++-- 预处理器 -- 预处理器定义,添加:_CRT_SECURE_NO_WARNINGS