私有继承

在声明一个派生类的时候将基类的继承方式指定为 private 的 , 称为私有继承 ,用私有继承方式建立的派生类称为私有派生类,其基类称为私有基类.

私有继承中的公用成员和保护成员在派生类中的访问属性相当于派生类中的私有成员 ,即派生类的成员函数能访问它们 ,而在派生类外是不能访问他们的.私有基类中的私有成员在派生类中成为不可访问成员,只有基类的成员函数可以引用它们 .私有基类的成员可以被基类成员函数访问 , 但不能被派生类的成员函数访问, 而私有基类中的公有成员函数可以通过派生类的共有成员函数访问 ,因此,如果我们要访问私有基类中的成员 ,只能通过派生类的成员函数,间接的访问私有基类中的公用成员函数 ,而不同直接访问基类中的private 成员数据 .这就体现了封装性 .

#include <iostream>
#include <cstdio>
using namespace std ;
class Student {public :void get_value(){cin >> num >>name >>sex ;}void display(){cout <<"num "<<num <<endl;cout <<"name "<<name <<endl ;cout <<" sex "<<sex ;}
private :int num ;string name ;char sex ;
};
class Student1:private Student{public :void get_value1(){cout << " 这是私有基类中的公用成员函数 get_value()" <<endl ;get_value();cout <<" 这是派生类中的" <<endl;cin >>age >>addr ;}void display_1(){cout <<"这是私有基类 中的公用成员函数 isplay()"<<endl;display();cout <<endl;cout <<" 派生类  age "<<age <<endl;cout <<" 派生类  address "<<addr <<endl ;}
private :int age ;string addr ;
};
int main()
{Student1 a ;a.get_value1();a.display_1() ;return 0 ;
}

其中 代码段 :

 void get_value1(){cout << " 这是私有基类中的公用成员函数 get_value()" <<endl ;get_value();cout <<" 这是派生类中的" <<endl;cin >>age >>addr ;}

这就是通过在派生类中的public 成员函数中调用了基类中的成员函数,进而间接访问了基类中的私有成员数据 .

c++继承---私有继承相关推荐

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

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

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

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

  3. 2021-11-09 C++封装继承多态---继承语法、多态语法、文件操作(附代码理解)

    6 继承 6.1继承的基本语法 例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同,接下来我们分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义 ...

  4. 第十九章 19 利用私有继承来实现代码重用

    //19 利用私有继承来实现代码重用 //我们还有一种方法来实现这种包含式的代码重用,那就是私有继承,派生类从基类私有继承后,其类的公有成员和保护成员在派生类中都是私有成员,私有成员成为不可访问的成员 ...

  5. [YTU]_2446( C++习题 输入输出--私有继承)

    题目描述 Student类含有私有数据成员:num,name,sex,公有成员函数: 输入函数get_value()和输出函数display().采用私有继承方式实现类Student1,增加数据成员: ...

  6. 类的继承私有成员问题

    类的继承过程分为公有继承,保护继承和私有继承,不管哪一种继承,基类的私有成员在派生类成员中都是不可见的,但是基类的私有成员是否被派生类继承了呢?通过下面实验就可以知道. 代码例如以下: #includ ...

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

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

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

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

  9. 《C++ Primer Plus》14.2 私有继承 学习笔记

    C++(除了成员变量之外)还有另一种实现has-a关系的途径--私有继承. 使用私有继承,基类的公有成员和保护成员都将成为派生类的私有成员. (如果使用保护继承,基类的公有成员和保护成员都将称为派生类 ...

最新文章

  1. 二.Springboot 常用注解
  2. 关于SurfaceView相机预览获取Bitmap的方法
  3. ViewPager 入门一
  4. ext2文件系统 - mke2fs
  5. jodd-StringTemplateParser使用
  6. QT的QMediaPlaylist类的使用
  7. 在同一个机器上布署两个JBOSS,要修改那些端口?
  8. POJ - 3020 Antenna Placement(最小路径覆盖-二分图最大匹配)
  9. 文件对比工具Beyond Compare的使用(入门)
  10. 炒菜机器人的弊端_机器人炒菜真不是你想的那样!
  11. python自动化工具哪个好用_10款好用的自动化测试工具推荐
  12. 社交媒体电影视频网HTML5模板
  13. 2-用EasyNetQ连接RabbitMQ(黄亮翻译)
  14. php中NULL、false、0、 有何区别?
  15. HDU 4597 Play Game (记忆化搜索博弈DP)
  16. Java反射库jOOR简介
  17. 架构设计--用户端全http参数接口详细说明v1
  18. Linux社区代码风格
  19. vfpodbc.dll下载, 各版本下载,包含所有版本
  20. 关于360评估的全面介绍

热门文章

  1. 微软Windows Azure云计算的几大竞争优势
  2. win8专业版桌面ie图标不见了怎么恢复--win10专业版
  3. 归档命令(5)——shar
  4. 【Splay】[SGU 187]Twist and whirl - want to cheat
  5. MySQL.MyBatis怎么将查询的两个字段作为Map的key和value
  6. 云服务器自带什么软件,连接云服务器都用什么软件或者工具,一文就足够了!...
  7. 微信聊天新技能!微信聊天彩色字体!个性炫酷~
  8. 正式声明:转载本Blog文章请注明原始出处和作者
  9. Outlook收件箱总显示有未读邮件问题
  10. KDYD-JC自动高压漆膜连续性试验仪