c++学习笔记之继承篇

一 继承方式

  • public
  • protected
  • private

二 多继承和多重继承

举个例子就明白了

多继承 :农民工就算是多继承。

graph TD;
    人类-->农民;
    人类-->工人;
    农民-->农民工;
    工人-->农民工;

多重继承 :小学生属于多重继承

graph TD;
    人-->学生;
    学生-->小学生;

三 虚继承和虚函数

虚继承是多重继承中特有的概念,是为解决多重继承的。用虚继承可以节省内存空间

如上图示例,类D同时继承B,C,而B,C又同时继承A,很显然在声明D时,会两次初始化类A,这样不仅重复定义了类A,而且浪费空间,因此在定义B,C两个类的时候就需要虚继承类A,代码示例如下

class A{};
class B:vitual public A
{};
class C:vitual public A
{};
class D: public B, public C
{};

在这里插播一条”广告“,即如何巧妙的避免头文件被重复include的解决办法: 使用重定义即可 为什么使用重定义?

一个东西在同一个作用域里被定义(声明)了两次或以上,编译器不知道该采用哪一个声明。多发生在头文件被重复include的时候。在c语言中可以采用如下代码可以防止头文件重复包括,头文件被include了第一次,第二次就include就被无视跳过

#ifndef _person
#define _person
#include "person.h"
...
...
#endif

虚函数是面向对象多态性的主要方式,通过继承基类中的虚函数在子类中重载实现不同操做。继承的虚函数在子类中不需要加virtual,默认就是虚函数。可以被它的子类覆盖。

注意:virtual在函数中的使用限制

  • 不能修饰普通函数
  • 不能修饰类静态成员函数(static)
  • 不能修饰内联函数(inline)
  • 不能修饰构造函数

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏从流域到海域

《笨办法学Python》 第38课手记

《笨办法学Python》 第38课手记 注意这是第三版的《笨办法学Python》的内容,我后来发现第三版存在很大的问题,就放弃了第三版开始使用第四版,第四版的第...

3428
来自专栏章鱼的慢慢技术路

追踪状态——消息解码问题的思路剖析

1783
来自专栏小樱的经验随笔

python学习笔记之运算符

目录 前言 软件环境 身份运算符 算术运算符 比较运算符 位移运算符 自变运算符 位运算符 逻辑运算符 成员关系运算符 Python真值表 最后 前言 在前面的...

3293
来自专栏一枝花算不算浪漫

[C#基础]基础知识一: 面向对象的基本知识.

43617
来自专栏Python攻城狮

Python-random模块

7.从列表a中以随机顺序取出3个元素(一个元素只能取出一次,所以取出的个数不能大于列表所含元素的个数)

972
来自专栏数据科学与人工智能

【Python环境】Python函数式编程指南(2):函数

2. 从函数开始 2.1. 定义一个函数 如下定义了一个求和函数: def add(x, y): return x + y 关于参数和返回值的语法细节可以参考...

2205
来自专栏平凡文摘

7大经典的排序算法总结实现

1442
来自专栏代码世界

Python基础数据类型之int、bool、str

数据类型:int  bool  str  list  元祖  dict  集合 int:整数型,用于各种数学运算。 bool:只有两种,True和False,用...

3436
来自专栏marsggbo

c++学习笔记之继承篇

一 继承方式 public ? protected ? private ? 二 多继承和多重继承 举个例子就明白了 多继承 :农民工就算是多继承。 graph...

2027
来自专栏IT可乐

Java数据结构和算法(十三)——哈希表

  Hash表也称散列表,也有直接译作哈希表,Hash表是一种根据关键字值(key - value)而直接进行访问的数据结构。它基于数组,通过把关键字映射到数组...

3068

扫码关注云+社区

领取腾讯云代金券