C++学习杂记(1)公有派生、私有派生、保护派生

前言

第一次在网上发布文字内容,之前一直想做,但因为各种事情耽误或者自己没有勇气键入第一个字符而一直拖延。为了使自己所学的知识能够系统的保存,这件事也非做不可了。本文属于一个系列内容,即《C++学习杂记》,各文章不会像《C++ primer》那样有序而完备,只是为了记录自己遇到问题时涉及的相关概念的阐述。

本系列第一篇文章讲述的是C++中各种继承的特性,包括公有继承、私有继承、保护继承。

各种继承特性

实际上,关于C++继承的特性完全可以由一张表来阐述(摘抄自公有继承,私有继承,保护继承的区别
image
如表1所示,对一个类来说,包含三种成员:私有成员、公有成员、保护成员。下面分别围绕三种派生进行讨论。

1.公有派生

形式:class a : public b
基类私有成员:是不能被访问的,基类的私有成员只能被基类的成员函数访问到,或者是声明为友元函数(类)才可以访问
基类公有成员:是可以访问的,即公有派生类的实例可直接调用基类的公有成员(变量或函数等)
基类保护成员:也是可以访问的,但只能在类定义中的成员函数可以调用,不能在外部通过公有派生类的实例进行调用

2.私有派生

形式:class a : private b
基类私有成员:也是不能被访问的,理由同上
基类公有成员:对于私有派生类,即使基类的成员为公有,在私有派生的条件下,也全变成私有。意思是类的成员函数可以调用,在外面不能通过实例来直接调用
基类保护成员:直接把基类的保护成员变换成私有的,后续处理同上

3.保护派生

形式:class a : protected b
基类私有成员:同样,也是不能访问的,理由同上
基类公有成员:对于保护派生,将基类的公有成员变成保护派生类的保护成员
基类保护成员:基类的保护成员转变为保护派生类的保护成员

你可能感兴趣的:(c++)