博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++学习笔记之继承篇
阅读量:6079 次
发布时间:2019-06-20

本文共 933 字,大约阅读时间需要 3 分钟。


title: c学习笔记之继承篇 date: 2017-03-26 16:36:33 tags: [c,继承,public,virtual,private,protected] categories: [学习,程序员,c++]


一 继承方式

  • public

enter description here

  • protected

enter description here

  • private

enter description here

二 多继承和多重继承

举个例子就明白了

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

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

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

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

三 虚继承和虚函数

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

enter description here 如上图示例,类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)
  • 不能修饰构造函数

MARSGGBO原创
2017-3-26

转载地址:http://gyegx.baihongyu.com/

你可能感兴趣的文章
面向桌面开发的Windows Template Studio
查看>>
TriggerMesh开源用于多云环境的Knative Event Sources
查看>>
SSPL的MongoDB再被抛弃,GUN Health也合流PostgreSQL
查看>>
微软表示Edge的性能更优于Chrome和Firefox
查看>>
基于容器服务的持续集成与云端交付(三)- 从零搭建持续交付系统
查看>>
Microsoft使用.NET Core SDK遥测数据
查看>>
《Spark GraphX in Action》书评及作者访谈
查看>>
IBM推出了针对区块链部署的云服务
查看>>
关于5G被激烈讨论的那些争端和冲突
查看>>
使用Apache Spark构建实时分析Dashboard
查看>>
2017年InfoQ最受欢迎30项内容清单
查看>>
OpenAI披露最新研究成果:AI训练如何扩展到更大规模?
查看>>
周下载量过200万的npm包被注入恶意代码,Vue、Node项目恐受影响
查看>>
写给Java工程师的面试指南
查看>>
ASP.NET Core 2.1带来SignalR、Razor类库
查看>>
GitHub Desktop发布1.5版本,简化合并冲突解决
查看>>
传奇黑客看衰并行计算:多核处理器纯属浪费
查看>>
linux基础命令介绍十五:推陈出新
查看>>
Linux 内核 4.20 圣诞发布!新增硬件支持,性能有所改进
查看>>
百度云BaaS体系揭秘,突破共识机制、单机计算和串行处理三大瓶颈
查看>>