c++之继承

这两天看了c++继承相关的知识,现将要点总结如下:

为什么要继承?

为避免代码的重复,减少程序员的工作量,采用继承的方式将父类的数据成员和成员函数传给子类,使得子类不用定义就能拥有相关成员。

继承的方式:

公有继承public
保护继承protected
私有继承private

继承方式 基类的public成员 基类的protected成员 基类的private成员
public 变为public成员 变为protected成员 不可见
protected 变为protected成员 变为protected成员 不可见
private 变为private成员 变为private成员 不可见

什么是隐藏?

父类A和子类B中定义了同名的数据成员和成员函数时,子类B中的成员函数和数据成员会隐藏掉父类A中的成员。体现在当实例化B的对象后,该对象只能访问B中定义的成员函数,而A中的同名成员函数虽然继承到B中,但并不能被B的实例访问。若一定要通过B的实例访问A中同名成员,必须要加上父类的类名。

注意:父类和子类中的同名函数,即使各自含有不同的参数,子类的实例仍不能访问父类中与之同名的成员函数

多继承和多重继承

  • 多继承:指一个子类C,既继承了父类A,又继承了父类B
  • 多重继承:指子类C继承父类B,而B又继承父类A
  • 菱形继承:继承与同一个类的两个类,又同时继承给下一个类

虚继承

虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A(菱形继承),因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下:

class A

class B1:public virtual A;

class B2:public virtual A;

class D:public B1,public B2;

注意:虚拟继承在一般的应用中很少用到,所以也往往被忽视,这也主要是因为在C++中,多重继承是不推荐的,也并不常用,而一旦离开了多重继承,虚拟继承就完全失去了存在的必要因为这样只会降低效率和占用更多的空间。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 结构体和共同体的区别。 定义: 结构体struct:把不同类型的数据组合成一个整体,自定义类型。共同体uni...
    breakfy阅读 2,138评论 0 22
  • Advanced Language Features 知识点:一. static修饰符 static修饰符可以用来...
    风景凉阅读 455评论 0 0
  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,614评论 4 12
  • 世上一切事物,只是百千万面大大小小的镜子,重叠对照,反射又反射;于是世上有了这许多璀璨辉煌,虹影般的光彩。 所以世...
    积极的太阳阅读 386评论 0 0
  • 准备就绪,明日启程回广西。近日百感交集,说不清道不明的感觉。去年三月份出来闯荡,一直在外漂泊。对家里年迈的奶奶甚...
    腹有诗书3002阅读 111评论 0 0