(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. Windows- 改变cmd控制台默认显示编码

    在中国的电脑会要求兼容gbk编码,所以微软进入中国市场也顺应中国的要求,其中最明显的就是在cmd上默认的显示就是GBK .当开发人员在运行一些有打印中文的程序时,由于编码采用国际兼容版本的utf_8等 ...

  2. cookie对比localStorage哪个适合作为网站皮肤存储

    cookie对比localStorage哪个适合作为网站皮肤存储 cookie cookie : 一般由服务器生成,可设置失效时间.如果在浏览器生成,默认是关闭浏览器之后失效 存储大小:4k 每次都会 ...

  3. UniDAC 的 RecordCount 属性注意事项

    一直以来都是用UniDAC作为数据库查询组件,而一般的写法都是这样: UniQuery_sqlite.close; UniQuery_sqlite.SQL.Clear; UniQuery_sqlite ...

  4. POJ 1258 Agri-Net(Prim算法)

    题意:n个农场,求把所有农场连接起来所需要最短的距离. 思路:prim算法 课本代码: //prim算法 #include<iostream> #include<stdio.h> ...

  5. Netty组件理解(转载)

    转载的文章,写的非常好.   一.先纵览一下Netty,看看Netty都有哪些组件?        为了更好的理解和进一步深入Netty,我们先总体认识一下Netty用到的组件及它们在整个Netty架 ...

  6. Tomcat报错:HTTP Status 500 - Wrapper cannot find servlet class

    HTTP Status 500 - Wrapper cannot find servlet class com.servlet.servlet.RegServlet or a class it dep ...

  7. 【leetcode刷题笔记】Validate Binary Search Tree

    Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...

  8. H.264 码率设置

    一.什么是视频码率 视频码率是视频数据(包含视频色彩量.亮度量.像素量)每秒输出的位数.一般用的单位是kbps. 二.设置视频码率的必要性 在网络视频应用中,视频质量和网络带宽占用是相矛盾的.通常情况 ...

  9. HDOJ2553(2N皇后问题)

    N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  10. 数据库:mysql 获取刚插入行id[转]

    我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数, 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的.但在多线程情况下,就不行了. 下面介 ...