zoukankan      html  css  js  c++  java
  • c++学习笔记之继承篇


    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

  • 相关阅读:
    MSPlus DataList Control(大数据量时的分页演示)
    关于MSPlus控件下载后用VS.NET打开提示目录不对的解决方法
    MSPlus.TabControl V1.1 版本发布
    发布MSPlus TabControl WebControl V1.0.0710 版本
    想开发.Net Server Controls 的初学者必读资料
    K8S学习笔记01
    snmpd服务部署与爆破
    python连接telnet服务
    Telnet协议底层研究及python中telnetlib核心源码分析
    K8S学习笔记03
  • 原文地址:https://www.cnblogs.com/marsggbo/p/6623220.html
Copyright © 2011-2022 走看看