标签: c++
2012-07-10 10:06 5805人阅读 评论(0) 收藏 举报
分类:
C++ Primer笔记(4)
当private,public,protected单纯的作为一个类中的成员权限设置时:
private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问.


protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问 

public: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问
注:友元函数包括两种:设为友元的全局函数,设为友元类中的成员函数

当private,public,protected作为继承方式时:
对于公有继承方式: 
(1)父类的public成员成为子类的public成员,允许类以外的代码访问这些成员;
(2)父类的private成员仍旧是父类的private成员,子类成员不可以访问这些成员;
(3)父类的protected成员成为子类的protected成员,只允许子类成员访问;

(1) 基类成员对其对象的可见性:

公有成员可见,其他不可见。这里保护成员同于私有成员。

(2) 基类成员对派生类的可见性:

公有成员和保护成员可见,而私有成员不可见。这里保护成员同于公有成员。

(3) 基类成员对派生类对象的可见性:

公有成员可见,其他成员不可见。

所以,在公有继承时,派生类的对象可以访问基类中的公有成员;派生类的成员函数可以访问基类中的公有成员和保护成员。这里,一定要区分清楚派生类的对象和派生类中的成员函数对基类的访问是不同的。

对于私有继承方式:

(1)父类的public成员成为子类的private成员,只允许子类成员访问;
(2)父类的private成员仍旧是父类的private成员,子类成员不可以访问这些成员;
(3)父类的protected成员成为子类的private成员,只允许子类成员访问;

(1) 基类成员对其对象的可见性:

公有成员可见,其他成员不可见。

(2) 基类成员对派生类的可见性:

公有成员和保护成员是可见的,而私有成员是不可见的。

(3) 基类成员对派生类对象的可见性:

所有成员都是不可见的。

所以,在私有继承时,基类的成员只能由直接派生类访问,而无法再往下继承。

对于保护继承方式:

(1)父类的public成员成为子类的protected成员,只允许子类成员访问;
(2)父类的private成员仍旧是父类的private成员,子类成员不可以访问这些成员;
(3)父类的public成员成为子类的protected成员,只允许子类成员访问;

这种继承方式与私有继承方式的情况相同。两者的区别仅在于对派生类的成员而言,对基类成员有不同的可见性。

上述所说的可见性也就是可访问性。关于可访问性还有另的一种说法。这种规则中,称派生类的对象对基类访问为水平访问,称派生类的派生类对基类的访问为垂直访问。

一般规则如下:

公有继承时,水平访问和垂直访问对基类中的公有成员不受限制; 
私有继承时,水平访问和垂直访问对基类中的公有成员也不能访问; 
保护继承时,对于垂直访问同于公有继承,对于水平访问同于私有继承。

C++中的private protected public区别相关推荐

  1. php class中public,private,protected的区别以及实例分析

    本篇文章是对php class中public,private,protected的区别以及实例进行了详细的分析介绍,需要的朋友参考下 一,public,private,protected的区别 pub ...

  2. 解析Visual C# 7.2中的private protected访问修饰符

    去年12月份,随着Visual Studio 2017 Update 15.5的发布,Visual C#迎来了它的最新版本:7.2. 在这个版本中,有个让人难以理解的新特性,就是private pro ...

  3. dim private public static_PHP中const,static,public,private,protected的区别

    const: 定义常量,一般定义后不可改变 static: 静态,类名可以访问 public: 表示全局,类内部外部子类都可以访问: private: 表示私有的,只有本类内部可以使用: protec ...

  4. PHP中private什么意思,PHP中的private和public还有protected的区别

    最近H5项目繁忙,没空写PHP的学习心得.今天补上: 在接触PHP的最开始,我首先是看了PHP的源代码,PHP的源代码大致分四层:SAPI:接口层.main业务层.zend.以及扩展层EXT:这就是我 ...

  5. 简述private protected public internal修饰的访问权限

    private : 私有成员, 在类的内部才可以访问. protected : 保护成员,该类内部和继承类中可以访问. public :  公共成员,完全公开,没有访问限制.  internal: 当 ...

  6. public,private,protected访问权限在Java,C++中的解析

    Java中: Java中的访问权限有public,private,protected和默认的包访问权限,如果类中的属性方法没有显示的指明访问权限,则具有包访问权限,我喜欢称它为packeged权限,很 ...

  7. php 抽象类 接口 区别,PHP中抽象类、接口的区别与选择分析

    本文实例分析了PHP中抽象类.接口的区别与选择.分享给大家供大家参考,具体如下: 区别: 1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过 ...

  8. @synthesize@dynamic@private,@protected,@publicassign、weak、strong、retain、copy、nonatomic、atomic

    iOS属性修饰关键字 1. @private,@protected,@public,@package详解及使用 @privite:私有的,只有本类(不包括子类)自己拥有 @protected:受保护的 ...

  9. 我的学习笔记001--private protected public internal mxx

    1.简述 private  protected public internal修饰符的访问权限 private: 私有成员, 在类的内部才可以访问. protected: 保护成员,该类内部和继承类中 ...

最新文章

  1. windows平台RSA密钥生成
  2. 对ThreadLocal实现原理的一点思考
  3. java单列_Java 单例模式
  4. centos卸载内核_CentOS 中内核模块的加载和卸载
  5. 解决error 1045: Access denied for user: 'root@localhost' (Using password: YES)
  6. 中国剩余定理 互质与非互质版本
  7. Concept3D推出交互式3D地图平台
  8. Qt笔记-多线程检索数据库(单例多重锁,QtConcurrent::blockingMapped)
  9. 微软hackathon_Hackathon报告:30小时内您可以编写什么代码? 非常多!
  10. pytorch自我错误总结
  11. c底层用什么网站编写服务器,c编写服务器
  12. 【TWVRP】基于matlab智能水滴算法带时间窗的车辆路径与调度优化问题【含Matlab源码 1228期】
  13. dva开发一个cnode网站(2) 1
  14. 计算机 hdmi不显示桌面,电脑用HDMI连接电视,电视却只显示桌面 其他的什么都不显示...
  15. 联机带AI版3D桌球游戏源码
  16. 激光跟踪传感器的工作原理
  17. 中国NPP净初级生产力数据/植被覆盖空间分布数据分享(2000-2021)
  18. mysql 保存昵称_mysql 微信用户昵称emoji 完整保存
  19. 美团一面-20200328-1h
  20. python判断天数_Python计算两个日期相差天数的方法示例

热门文章

  1. make changes to the open source project?
  2. 中国和英国的旅行的对比
  3. OVS+Docker
  4. 哪些CSS是可以被继承的--简单整理
  5. Linux内核最新的连续内存分配器(CMA)——避免预留大块内存
  6. hihocoder #1329 : 平衡树·Splay
  7. poj 3469(最小割)
  8. poj-1845 Sumdiv nyoj - 928 小M的因子和
  9. zoj 3696 Alien's Organ(泊松分布)
  10. 把 分数化为循环小数 和 把循环小数化为分数 的方法