专栏首页AutoML(自动机器学习)c++学习笔记之继承篇

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 条评论
登录 后参与评论

相关文章

  • c++学习笔记之继承篇

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

    marsggbo
  • Andrew Ng机器学习课程笔记--week7(SVM)

    本周主要学习SVM 一、 内容概要 Large Margin Classification Optimization Objective(优化Objectiv...

    marsggbo
  • Pytorch里的CrossEntropyLoss详解

    首先要知道上面提到的这些函数一部分是来自于torch.nn,而另一部分则来自于torch.nn.functional(常缩写为F)。二者函数的区别可参见 知乎:...

    marsggbo
  • c++学习笔记之继承篇

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

    marsggbo
  • 看过必懂!JavaScript的继承

    最近刚把Js高级程序设计看了一遍,仔细的读了其中的第6章的第6.3节-继承。今天写出来跟大家分享一下,顺便也加深一下自己的理解。

    web前端教室
  • 6.3 被调用函数的声明和函数原型

    (2)如果使用库函数,应该在本文件开头用#include指令将调用有关库函数时所需用到的信

    C语言入门到精通
  • 一天一个设计模式:策略模式

    策略模式属于对象的行为模式,其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响客户端的情...

    用户1134788
  • SSH框架之Hibernate第四篇

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    海仔
  • Andrew Ng机器学习课程笔记--week7(SVM)

    本周主要学习SVM 一、 内容概要 Large Margin Classification Optimization Objective(优化Objectiv...

    marsggbo
  • 最强总结 | 带你快速搞定kotlin开发(下篇)

    通过前面两篇文章的介绍,我们对kotlin有了初步的了解(没看的同学可以通过点击话题跳转回去阅读),现在去动手写kotlin代码或者阅读一些kotlin源码应该...

    吴延宝

扫码关注云+社区

领取腾讯云代金券