前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >c++学习笔记之继承篇

c++学习笔记之继承篇

作者头像
marsggbo
发布2018-01-23 17:21:57
5590
发布2018-01-23 17:21:57
举报

一 继承方式

  • public
enter description here
enter description here
  • protected
enter description here
enter description here
  • private
enter description here
enter description here

二 多继承和多重继承

举个例子就明白了

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

代码语言:javascript
复制
graph TD;
    人类-->农民;
    人类-->工人;
    农民-->农民工;
    工人-->农民工;

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

代码语言:javascript
复制
graph TD;
    人-->学生;
    学生-->小学生;

三 虚继承和虚函数

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

enter description here
enter description here

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

代码语言:javascript
复制
class A{};
class B:vitual public A
{};
class C:vitual public A
{};
class D: public B, public C
{};

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

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

代码语言:javascript
复制
#ifndef _person
#define _person
#include "person.h"
...
...
#endif

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

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-03-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 继承方式
  • 二 多继承和多重继承
  • 三 虚继承和虚函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档