前文:C++之继承探究(一):继承的概念

protected成员

  在下面右例中,子类虽然继承了父类的私有成员b_number,但是在子类的print()函数中依然不能直接访问该私有成员,子类只能通过继承自父类的公有成员函数get_number来访问。
  如果父类里有protected类型的成员(下面左例),在子类中可以直接访问,不需要借助父类的公有函数;但是protected类型的成员,对外界依然是隐藏的,对外就像private类型一样。

例:

子类访问父类的私有成员的两种方式:

  (1)通过父类的公有的成员函数
  (2)将私有成员改为保护成员protected

附上例代码:

//小问学编程
#include<iostream>
using namespace std;class Base
{public:Base(int i):b_number(i){}int get_number(){return b_number;}void print(){cout<<b_number<<endl;}
protected:int b_number;
};class Derived:public Base
{public:
//子类中有两个成员变量:
//一个自己的,一个继承的,两个都要初始化Derived(int i,int j):Base(i),d_number(j){}void print(){//在子类中可以直接访问继承自父类的protected类型成员cout<<b_number<<" ";cout<<d_number<<endl;}
private:int d_number;
};int main()
{Base a(2);Derived b(3,4);a.print();//print()in Base//a.b_number=10; 错误!//b.b_number=100;错误!//不可以在外界访问protected类型的成员cout<<"b is ";b.print();//print()in Derivedreturn 0;
}

运行结果:


C++之继承探究(三):继承的方式

C++之继承探究(二):protected成员相关推荐

  1. C++之继承探究(三):继承的方式

    C++之继承探究(二):protected成员 继承方式   子类继承父类后,继承下来的成员的访问权限不能被子类提升,父类中的private成员被子类继承后依然是private成员,父类中的prote ...

  2. C++之继承探究(一):继承的概念

    前文:<Essential C++>笔记之漫游:面向对象编程思维 继承   (1)一个类A可以继承另一个类B,那么我们称类B为基类(父类),类A为派生类(子类).   (2)子类从父类继承 ...

  3. C++之继承探究(十二):子类的构造、析构和赋值运算符重载

    涉及到本文所讲知识点的博文: C++之析构函数探究 C++之常引用和浅拷贝探究 C++之一个函数链的简单例子(分文件实现) C++之Big Three:拷贝构造.拷贝赋值.析构函数探究 C++之操作符 ...

  4. C++继承机制(二)——继承中的构造和析构顺序、继承同名成员的处理方式

    目录: C++继承机制(一)--基本语法.三种继承方式.继承哪些数据 C++继承机制(二)--继承中的构造和析构顺序.继承同名成员的处理方式 C++继承机制(三)--多继承.菱形继承.虚继承原理 本篇 ...

  5. 私有继承与保护继承(protected 成员)

    私有继承(private): 继承的访问控制: 基类的public和protected成员:都以private身份出现在派生类中 基类的private成员:不可直接访问 访问权限: 派生类中的成员函数 ...

  6. C++中的继承(二)

    C++中的继承(二) 文章目录 C++中的继承(二) 一.派生类的默认成员函数 二.探讨派生类和基类的构造函数和析构函数真正的执行顺序 三.几个特殊的继承 一.派生类的默认成员函数 前面已经总结过类中 ...

  7. C++中的三种继承public,protected,private(转)

    三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 三种继承方式 public 继承 protect 继承 p ...

  8. C++之继承探究(十一):多重继承、菱形继承、虚继承、二义性问题及其解决方案

    前文:C++之继承探究(十):抽象基类与纯虚函数 多重继承: 例1:两个父类中的同名函数如何区分示例 解决方法:在子类对象调用print( )函数时加上某个父类的作用域符号. 附上例代码: //小问学 ...

  9. C++之继承探究(五):子类对象作父类对象使用

    前文:C++之继承探究(四):继承的使用 把子类对象当作父类对象使用 分三种情况:   (1) 将子类对象赋值给父类对象.    --把等号右边的子类对象,赋值给等号左边的父类对象时,仅仅是把子类中来 ...

最新文章

  1. iOS开发之UIWindow
  2. 清华大学计算机毕业论文,清华大学毕业论文撰写要求
  3. mysql_upgrade --force_社区投稿 | MySQL 8.0.16 告别mysql_upgrade升级方式
  4. tensorboard ckpt pb 模型的输出节点_tensorflow, ckpt 转 pb 并进行预测
  5. 想学数据分析但不会Python,过来看看SQL吧(上)~
  6. js 中声明变量 “提前”
  7. mysql数学函数名_MYSQL 常见数学函数说明
  8. 当年叱咤风云的框架Struts2,你可知Struts2内功如何修炼
  9. LeetCode 104.二叉树的最大深度(递归)
  10. SQL 查询表的第一条数据 和 最后一条数据
  11. Hadoop核心架构(1)
  12. 基于jpress二次开发的H5商城(已开源)
  13. rfid考勤系统c语言,基于RFID的员工考勤系统设计
  14. linux系统论文题目大全_计算机应用专业毕业论文题目大全选题
  15. 自底向上的归并排序算法
  16. SolidWorks2010
  17. 记一次ARM-鲲鹏服务器读写parquet报错解决过程
  18. Apple 公司开发者账号注册
  19. Vue快速入门一:官网、下载、定义变量
  20. 将数据库的数据导入es中

热门文章

  1. Win11体验——该来的来了,该走的没走,不该走的走了
  2. 基于JAVA+SpringMVC+Mybatis+MYSQL的生活质量衡量系统
  3. python 多列对齐_python – 如何连接两个数据帧并在这样的特定列上对齐?
  4. MFC中如何将焦点设置到指定控件上
  5. AndroidStudio新建项目报错build failed
  6. WPF中DatePiker值绑定以及精简查询
  7. oracle初始化化表空间用户权限
  8. Too many open files 问题的解决
  9. 多线程中对全局变量(整型类型)是否需要同步操作
  10. OpenShift Redhat的使用和介绍