私有继承(private):

  • 继承的访问控制:

    • 基类的public和protected成员:都以private身份出现在派生类中
    • 基类的private成员:不可直接访问
  • 访问权限:
    • 派生类中的成员函数:可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员
    • 通过派生类的对象:不能直接访问从基类继承的任何成员

保护继承(protected):

  • 继承的访问控制:

    • 基类的public和protected成员:都以protected身份出现在派生类中
    • 基类的private成员:不可直接访问
  • 访问权限:
    • 派生类中的成员函数:可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员
    • 通过派生类的对象:不能直接访问从基类继承的任何成员

protected 成员的特点与作用:

  • 对建立其所在类对象的模块来说,它与 private 成员的性质相同
  • 对于其派生类来说,它与 public 成员的性质相同
  • 既实现了数据隐藏,又方便继承,实现代码重用
  • 如果派生类有多个基类,也就是多继承时,可以用不同的方式继承每个基类
#include<iostream>
using namespace std;
class A
{public:void SetA(int x)  {  this->x = x;  }private:int x;
};
class B
{public:void SetB(int x)  {  this->y = y;  }private:int y;
};
class C
{protected:void SetC(int x)  {  this->y = y;  }private:int y;
};
class ABC:  public A, protected B
{public:void SetABC(int x, int y, int z){SetA(x);SetB(y);this->z = z;}private:int z;
};
class ABC2:  private ABC
{public:void SetABC2(int x)  {  SetB(x);  }
};
int main(void)
{ABC s1;s1.SetA(5);//s1.SetB(6);        非法!因为类B是保护继承,所以通过派生类的对象:不能直接访问从基类继承的任何成员s1.SetABC(2, 5, 6);
}

私有继承与保护继承(protected 成员)相关推荐

  1. 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 继承同名静态成员处理 ...

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

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

  3. C++_类和对象_C++继承_继承的方式_公共继承_保护继承_私有继承---C++语言工作笔记062

    然后我们再去看c++中的继承,现在我们来看,c++中继承的, 3种方式. 去看上面的图,可以看到,有公共继承,有保护继承,有私有继承.3种方式. 我们去写代码去看看.首先,我们写个Base1类, 然后 ...

  4. C++ 公有继承、保护继承和私有继承中类成员的访问权限的控制

    很多同学到现在仍然对访问权限不是很清楚,或者比较模糊,有的同学记了又忘,忘了又记,所以今天想要借这篇文章给大家做一些总结,然后提供一个比较简便的方法去记C++中的访问权限. 众所周知,C++通过pub ...

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

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

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

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

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

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

  8. C++之继承探究(二):protected成员

    前文:C++之继承探究(一):继承的概念 protected成员   在下面右例中,子类虽然继承了父类的私有成员b_number,但是在子类的print()函数中依然不能直接访问该私有成员,子类只能通 ...

  9. 类与面向对象的精华:继承【C++继承】

    引入继承 为什么需要继承? 简单举例 继承 定义 定性 is-a 而不是 has-a is-a has-a 语法 继承方式 继承方式影响了什么? 公有继承 public 私有继承 private 保护 ...

最新文章

  1. shell脚本删除linux中的文件
  2. PHP实现列表页综合筛选功能,dede织梦列表页联动筛选方法功能的实现
  3. Flyweight Pattern简单随笔
  4. 学习视觉和语言的多粒度对齐?字节提出新多模态预训练方法 X-VLM:代码已开源!...
  5. 内蒙古银行银行招聘计算机研究生,内蒙古银行招聘公告
  6. batch downloading file in python
  7. Linux下安装软件命令详解
  8. 下载主题jar包并导入到idea
  9. (Python)实现对非人脸图片的清洗
  10. font-family常用字体集合
  11. 像素越多越好?像元的面积越小越好?为何底大一级压死人?
  12. MP3的采样率和比特率
  13. 计算机快捷键英语,输入法电脑中英文切换快捷键
  14. WebMagic springboot 多站点垂直数据采集(支持插队采集)
  15. 关于WEB服务器硬件配置,你了解多少
  16. hdu 2545 树上战争
  17. 南京旅游迈入大数据时代
  18. 2015年第4本(英文第3本):Godfather教父
  19. 从开发转型到项目经理,在初创公司我做了什么
  20. guid和mbr格式的区别;32位和64位操作系统的区别。

热门文章

  1. 学完python能做什么-学完Python开发可以从事哪些行业?
  2. python练手经典100例-【Python精华】100个Python练手小程序
  3. 学python有前途吗-三十岁了,从零开始学python还有前途吗?
  4. python用什么来写模块-Python 3.1 用C写模块 扩展(序)
  5. python爬虫从入门到放弃-python 爬虫《从入门到放弃》
  6. python经典实例-Python机器学习经典实例
  7. JavaScript基础简单入门
  8. 算法-斐波那契数列:兔子序列
  9. flock用法详解 linux_netstat命令详解
  10. 能识别nvme的pe启动_【腾讯WeTest干货分享】机器学习在启动耗时测试中的应用及模型调优...