C++之继承探究(二):protected成员
前文: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成员相关推荐
- C++之继承探究(三):继承的方式
C++之继承探究(二):protected成员 继承方式 子类继承父类后,继承下来的成员的访问权限不能被子类提升,父类中的private成员被子类继承后依然是private成员,父类中的prote ...
- C++之继承探究(一):继承的概念
前文:<Essential C++>笔记之漫游:面向对象编程思维 继承 (1)一个类A可以继承另一个类B,那么我们称类B为基类(父类),类A为派生类(子类). (2)子类从父类继承 ...
- C++之继承探究(十二):子类的构造、析构和赋值运算符重载
涉及到本文所讲知识点的博文: C++之析构函数探究 C++之常引用和浅拷贝探究 C++之一个函数链的简单例子(分文件实现) C++之Big Three:拷贝构造.拷贝赋值.析构函数探究 C++之操作符 ...
- C++继承机制(二)——继承中的构造和析构顺序、继承同名成员的处理方式
目录: C++继承机制(一)--基本语法.三种继承方式.继承哪些数据 C++继承机制(二)--继承中的构造和析构顺序.继承同名成员的处理方式 C++继承机制(三)--多继承.菱形继承.虚继承原理 本篇 ...
- 私有继承与保护继承(protected 成员)
私有继承(private): 继承的访问控制: 基类的public和protected成员:都以private身份出现在派生类中 基类的private成员:不可直接访问 访问权限: 派生类中的成员函数 ...
- C++中的继承(二)
C++中的继承(二) 文章目录 C++中的继承(二) 一.派生类的默认成员函数 二.探讨派生类和基类的构造函数和析构函数真正的执行顺序 三.几个特殊的继承 一.派生类的默认成员函数 前面已经总结过类中 ...
- C++中的三种继承public,protected,private(转)
三种访问权限 public:可以被任意实体访问 protected:只允许子类及本类的成员函数访问 private:只允许本类的成员函数访问 三种继承方式 public 继承 protect 继承 p ...
- C++之继承探究(十一):多重继承、菱形继承、虚继承、二义性问题及其解决方案
前文:C++之继承探究(十):抽象基类与纯虚函数 多重继承: 例1:两个父类中的同名函数如何区分示例 解决方法:在子类对象调用print( )函数时加上某个父类的作用域符号. 附上例代码: //小问学 ...
- C++之继承探究(五):子类对象作父类对象使用
前文:C++之继承探究(四):继承的使用 把子类对象当作父类对象使用 分三种情况: (1) 将子类对象赋值给父类对象. --把等号右边的子类对象,赋值给等号左边的父类对象时,仅仅是把子类中来 ...
最新文章
- iOS开发之UIWindow
- 清华大学计算机毕业论文,清华大学毕业论文撰写要求
- mysql_upgrade --force_社区投稿 | MySQL 8.0.16 告别mysql_upgrade升级方式
- tensorboard ckpt pb 模型的输出节点_tensorflow, ckpt 转 pb 并进行预测
- 想学数据分析但不会Python,过来看看SQL吧(上)~
- js 中声明变量 “提前”
- mysql数学函数名_MYSQL 常见数学函数说明
- 当年叱咤风云的框架Struts2,你可知Struts2内功如何修炼
- LeetCode 104.二叉树的最大深度(递归)
- SQL 查询表的第一条数据 和 最后一条数据
- Hadoop核心架构(1)
- 基于jpress二次开发的H5商城(已开源)
- rfid考勤系统c语言,基于RFID的员工考勤系统设计
- linux系统论文题目大全_计算机应用专业毕业论文题目大全选题
- 自底向上的归并排序算法
- SolidWorks2010
- 记一次ARM-鲲鹏服务器读写parquet报错解决过程
- Apple 公司开发者账号注册
- Vue快速入门一:官网、下载、定义变量
- 将数据库的数据导入es中
热门文章
- Win11体验——该来的来了,该走的没走,不该走的走了
- 基于JAVA+SpringMVC+Mybatis+MYSQL的生活质量衡量系统
- python 多列对齐_python – 如何连接两个数据帧并在这样的特定列上对齐?
- MFC中如何将焦点设置到指定控件上
- AndroidStudio新建项目报错build failed
- WPF中DatePiker值绑定以及精简查询
- oracle初始化化表空间用户权限
- Too many open files 问题的解决
- 多线程中对全局变量(整型类型)是否需要同步操作
- OpenShift Redhat的使用和介绍