公有继承(public)、私有继承(private)、保护继承(protected)是C++三种继承方式。
  • 公有继承(public)
公有继承(public)的特点是基类的公有成员(public)和保护成员(protected)作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有(public)的,不能被这个派生类的子类所访问。
  • 私有继承(private)
私有继承(private)的特点是基类的公有成员(public)和保护成员(protected)都作为派生类的私有成员(private),并且不能被这个派生类的子类所访问,基类的私有成员仍然是私有(public)的。
  • 保护继承(protected)
保护继承(protected)的特点是基类的所有公有成员(public)和保护成员(protected)都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有(public)的。

公有继承(public)塑模出is-a关系

  适用于基类的每一件事情一定适用于派生类,每一个通过公有继承而来的派生类对象也是一个基类对象。

私有继承(private)意味着implemented-in-terms-of(根据某物实现出)

  当一个class B private继承 class A 用意是采用class A 已经拥有的某些特性,而不是两个类之间存在任何观念上的关系。

主要体现在一个子类对象不能转型为父类对象,从父类继承的所有成员都成为子类的私有成员。

私有继承一般可以用复合来替代。复合可以塑模出has-a或implemented-in-terms-of(根据某物实现出)两种关系。当派生类

需要访问protected 的基类成员或者重新定义virtual函数,应该用private继承比较合理。

复合区别去公有继承(is-a),在应用领域体现的是has-a,在实现领域体现的是implemented-in-terms-of(根据某物实现出)。

例如:一辆车有车轮,发动机,车身等组成,这就是has-a的关系;一个栈我们用两个队列去实现这就是implemented-in-terms-of(根据某物实现出)。

转载于:https://www.cnblogs.com/kiplove/p/7415244.html

C++公有、私有、保护继承的关系相关推荐

  1. 公有/私有/保护继承、overload/overwrite/override之间的区别

    一.继承 C++很重要的一个特征就是代码重用.在C语言中重用代码的方式就是拷贝代码.修改代码.C++可以用继承或组合的方式来重用.通过组合或继承现有的的类来创建新类,而不是重新创建它们. 继承是使用已 ...

  2. 从零开始学C++之继承(一):公有/私有/保护继承、overload/overwrite/override之间的区别...

    一.继承 C++很重要的一个特征就是代码重用.在C语言中重用代码的方式就是拷贝代码.修改代码.C++可以用继承或组合的方式来重用.通过组合或继承现有的的类来创建新类,而不是重新创建它们. 继承是使用已 ...

  3. C++中公有继承、保护继承、私有继承

    就class之间的关系做一个简单的定义,继承base class的class,base class可以认为class都是自己的子女. 1.public:public表明该数据成员.成员函数是对所有用户 ...

  4. 关于C++中公有继承、私有继承、保护继承的讨论

    一.文章来由 简单明了的理由,老生常谈但是没真正解决的问题,想搞清楚这个问题. 二.冗长的定义 我们先来看看这些冗长的定义: 公有继承: 当类的继承方式为公有继承时,基类的公有成员和保护成员的访问属性 ...

  5. 公有继承/私有继承/保护继承的区别

    1.公有继承–public 公有继承时,对基类的公有成员和保护成员的访问属性不变,派生类的新增成员可以访问基类的公有成员和保护成员,但是访问不了基类的私有成员.派生类的对象只能访问派生类的公有成员(包 ...

  6. C++公有继承,保护继承,私有继承的区别

    1.公有继承–public 公有继承时,对基类的公有成员和保护成员的访问属性不变,派生类的新增成员可以访问基类的公有成员和保护成员,但是访问不了基类的私有成员.派生类的对象只能访问派生类的公有成员(包 ...

  7. 8.公有继承 保护继承 私有继承

    一个子类继承父类时,可按照public.private和protected方式继承父类,每种继承方式的区别如下: 1) public继承方式 基类中所有public成员在派生类中为public属性: ...

  8. 公有继承,私有继承,保护继承的区别

    一个子类继承父类时,可按照public.private和protected方式继承父类,每种继承方式的区别如下: 1) public继承方式 基类中所有public成员在派生类中为public属性: ...

  9. C++继承详解:共有(public)继承,私有(private)继承,保护(protected)继承

    转自:http://www.cnblogs.com/qlwy/archive/2011/08/25/2153584.html C++继承:公有,私有,保护 公有继承(public).私有继承(priv ...

  10. c/c++入门教程 - 2.4.6 继承、公共继承、保护继承、私有继承、virtual虚继承(概念、语法、方式、构造和析构顺序、同名成员处理、继承同名静态成员处理、多继承语法、菱形继承、钻石继承)

    目录 4.6 继承 4.6.1 继承的基本语法 4.6.2 继承方式 4.6.3 继承中的对象模型 4.6.4 继承中构造和析构顺序 4.6.5 继承同名成员处理方式 4.6.6 继承同名静态成员处理 ...

最新文章

  1. 论文被拒怎么办?(下)
  2. QT的QSGGeometry类的使用
  3. Android之在一个类里面注册Handler发送消息在另外一个类里面接收消息
  4. 使用数组操作解码YOLO Core ML对象检测(三)
  5. 【bzoj1742】[Usaco2005 nov]Grazing on the Run 边跑边吃草 区间dp
  6. python学习图解_大牛整理!Python学习方法和学习路线,看完茅塞顿开!
  7. 如何阻止 AcrobatPro DC自动更新升级?
  8. segger公司调试cortex-m内核出现hardfault的方法
  9. IOS逆向-静态分析
  10. Python 每日一记31相关性矩阵建立
  11. latex排版--插入符号数学公式常见问题
  12. 关闭极域电子教室文档
  13. subs php,nginx subs_filter对输出内容进行替换
  14. Android dex2oat命令参数解释
  15. inventor(2):设置单位,显示完整工具区/功能区,创建分割面
  16. FileIO - java
  17. jwt的token要存mysql吗_认证的token不存到数据库
  18. PIXEL C 未支持命令(remote: unsupported command)解决记录
  19. 计算机启动进入桌面非常慢,电脑开机加载桌面很慢的解决办法
  20. STC8H运行smallRTOS51操作系统(1)

热门文章

  1. 1X1卷积核到底有什么作用呢?
  2. 【一周学术热点】预训练模型,文本生成,模型蒸馏
  3. 李宏毅-《深度学习人类语言处理》国语版(2020)视频课程及ppt分享
  4. 只知道CS224N?斯坦福最新推出NLU公开课CS224U
  5. 干货 | PyTorch常用代码段整理合集
  6. 【深度学习】你该会的精选面试题(一)
  7. CNN_原理以及pytorch多分类实践
  8. 深度学习2.0-27.动量与学习率衰减
  9. 梯度消失与梯度爆炸原因剖析
  10. Xgboost版本对比(原生版与sklearn接口版)