继承

继承:
可以理解为一个类从另一个类中获取成员变量和成员函数的过程. eg:B类继承于 A类, 那么B 就拥有 A 的成员变量和成员函数. 被继承的类称为父类或者基类, 继承的类称为子类或者派生类.

派生类除了拥有基类的成员, 还可以定义自己的成员函数和成员变量.

class 派生类名: [继承方式] 基类名 {
派生类的新成员;
};
// 继承承方式限定了基类成员在派生类中的访问权限,包括 public(公有的)、private(私有的)和 protected(受保护的)。此项是可选的,如果不写,默认为 private 或 protected。

(1) public 继承方式

  • 基类中所有public 成员在派生类中的属性为 public;
  • 基类中所有 protected 成员在派生类中的属性为 protected;
  • 基类中所有 private 成员在派生类中是不可访问的.

(2) protected 继承方式

  • 基类中所有的 public 成员在派生类中为 protected 属性;
  • 基类中所有的 protected 成员在派生类中为protected 属性;
  • 基类中所有的 private 成员在派生类中是不可访问的.

(3) private 继承方式

  • 基类中所有的 public 成员在派生类中都为 private 属性;
  • 基类中所有的 protected 成员在派生类中都为 private 属性;
  • 基类中所有的 private 成员在派生类中都是不可访问的.

基类的构造函数不能被派生类继承, 在声明派生类时, 对继承过来的成员变量的初始化工作也要由派生类的构造函数来完成. 所以在设计派生类的构造函数时, 不仅要考虑派生类新增的成员变量, 还要考虑基类的成员变量, 要让他们都被初始化.

解决这个问题的思路是:在执行派生类的构造函数时, 调用基类的构造函数.

事实上, 通过派生类创建对象时, 必须调用基类的构造函数.

当创建对象时, 会先调用基类的构造函数, 再调用派生类的构造函数.(自基类向派生类)

析构函数是不能被继承的.

析构函数的调用时与构造函数的调用顺序相反, 先调用派生类的析构函数, 再调用基类的析构函数.

多继承:
http://c.biancheng.net/cpp/biancheng/view/2986.html
这个例子很好的说明了:基类对象和派生类对象之间的赋值仅仅是对应的成员变量的赋值,不会影响成员函数,不会影响 this 指针。

virtual:
借助虚函数, 基类指针既可以调用基类的成员函数, 也可以使用派生类的成员函数, 它有多种形态, 或多种表现方式, 这就是多态.

多态是面向对象的主要特征, 在 c++中, 虚函数的唯一作用就是构成多态.

C++提供多态的目的是: 可以通过基类指针对所有派生类(包括直接派生类和简介派生类) 的成员变量和成员函数进行"全方位"的访问, 尤其是成员函数. 如果没有多态, 我们只能访问成员变量.

构成多态的条件:

  • 必须存在继承关系;
  • 继承关系中必须有同名的虚函数, 并且它们是覆盖关系 (重载不行).
  • 存在基类的指针, 通过改制这调用虚函数.

Note:

  • 派生类中的虚函数必须覆盖(不是重载)基类的虚函数, 才能通过基类指针访问.

有虚函数才能构成多态,

另外注意:

  1. virtual 关键字仅用于函数声明, 如果函数是在类外定义, 则不需要再加上 virtual 关键字.
  2. 为了方便, 你可以只将基类中的函数声明为虚函数, 所有派生类中具有覆盖关系的同名函数都将自动成为虚函数.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,233评论 6 495
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,357评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,831评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,313评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,417评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,470评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,482评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,265评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,708评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,997评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,176评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,503评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,150评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,391评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,034评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,063评论 2 352

推荐阅读更多精彩内容

  • 一、继承和多态在面向对象编程中,继承(也称为派生)让您能够创建新类,而这些类继承了父类(也称为基类)的特征和行为。...
    CarlDonitz阅读 841评论 0 2
  • 继承和多态 1. 继承的优缺点 优点:(1)子类可以灵活地改变父类中的已有方法;(2)能够最大限度的实现代码重用。...
    MinoyJet阅读 625评论 0 0
  • C++ 基础 概念及工方式 保持已有类的特性而构造新类的过程称为继承。在已有类的基础上新增自己的特性而产生新类的过...
    I踏雪寻梅阅读 299评论 0 2
  • 《摔跤吧,爸爸》 看到好多朋友推荐这部电影,好奇心的我也看了下,阿米尔·汗是我很敬重的演员,我不是常看电影,但这位...
    百日跑者孙大剩阅读 364评论 7 8
  • 去年大热的台湾青春爱情电影《我的少女时代》,讲述了普通少女林真心与校草欧阳非凡、校霸徐太宇之间的青春恋爱故事,剧情...
    浮生如梦亦如书阅读 924评论 1 2