本文共 933 字,大约阅读时间需要 3 分钟。
title: c学习笔记之继承篇 date: 2017-03-26 16:36:33 tags: [c,继承,public,virtual,private,protected] categories: [学习,程序员,c++]
举个例子就明白了
多继承 :农民工就算是多继承。
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在函数中的使用限制
转载地址:http://gyegx.baihongyu.com/