第一: private,public,protected的訪问范围:
 
private: 仅仅能由该类中的函数、其友元函数訪问,不能被不论什么其它訪问。该类的对象也不能訪问.


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

public: 能够被该类中的函数、子类的函数、其友元函数訪问,也能够由该类的对象訪问

注:友元函数包含两种:设为友元的全局函数,设为友元类中的成员函数



第二:类的继承后方法属性变化:


使用private继承,父类的全部方法在子类中变为private;

使用protected继承,父类的protected和public方法在子类中变为protected,private方法不变;

使用public继承,父类中的方法属性不发生改变;

三种訪问权限

public:能够被随意实体訪问

protected:仅仅同意子类及本类的成员函数訪问

private:仅仅同意本类的成员函数訪问

三种继承方式

public 继承

protect 继承

private 继承

组合结果

基类中 继承方式 子类中

public & public继承 => public

public & protected继承 => protected

public & private继承 = > private

protected & public继承 => protected

protected & protected继承 => protected

protected & private继承 = > private

private & public继承 => 子类无权訪问

private & protected继承 => 子类无权訪问

private & private继承 = > 子类无权訪问

由以上组合结果能够看出

1、public继承不改变基类成员的訪问权限

2、private继承使得基类全部成员在子类中的訪问权限变为private

3、protected继承将基类中public成员变为子类的protected成员,其他成员的訪问 权限不变。

4、基类中的private成员不受继承方式的影响,子类永远无权訪问。

此外,在使用private继承时。还存在第二种机制:准许訪问 。

我们已经知道,在基类以private方式被继承时,其public和protected成员在子类中变为private成员。

然而某些情况下,须要在子类中将一个或多个继承的成员恢复其在基类中的訪问权限。

C++支持以两种方式实现该目的

方法一。使用using 语句,这是C++标准建议使用的方式

方法二,使用訪问声明。形式为 base-class::member;。 位置在子类中适当的訪问声明处。(注。仅仅能恢复原有訪问权限。而不能提高或减少訪问权限)

C++中public、protected、private的差别的更多相关文章

  1. C++中public,protected,private派生类继承问题和访问权限问题

    C++中public,protected,private派生类继承问题和访问权限问题 当一个子类从父类继承时,父类的所有成员成为子类的成员,此时对父类成员的访问状态由继承时使用的继承限定符决定. 1. ...

  2. 【转载】C++中public,protected,private访问

    第一:private, public, protected 访问标号的访问范围. 假如我们约定: 类内部-----指的是当前类类型的定义中,以及其成员函数的声明和定义中: 类外部-----指的是不在当 ...

  3. C++中public,protected,private访问

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

  4. 快速理解类的访问控制(public,protected,private)

    接触过面向对象编程的朋友们都知道类中的访问控制符无非有三个,public, protected, private. 理解他就先从期望他达到的效果先说吧 Public: 使成员对于整个程序内(类内类外) ...

  5. JAVA修饰符类型(public,protected,private,friendly)

    转自:http://www.cnblogs.com/webapplee/p/3771708.html JAVA修饰符类型(public,protected,private,friendly) publ ...

  6. php public protected private属性实例详解

    php 类中函数和类变量都有三个属性:public protected private,具体什么时候使用什么属性好纠结,特意找了个实例,这样看起来更清晰. public 表示全局,类内部外部子类都可以 ...

  7. C++ 类访问控制(public/protected/private)

    第一:private, public, protected 访问标号的访问范围. private:只能由1.该类中的函数.2.其友元函数访问. 不能被任何其他访问,该类的对象也不能访问. protec ...

  8. JAVA类型修饰符(public,protected,private,friendly)

    JAVA类型修饰符(public,protected,private,friendly) public的类.类属变量及方法.包内及包外的不论什么类均能够訪问:protected的类.类属变量及方法,包 ...

  9. 【转】C++易混知识点5:实例讲解Public Protected Private作用域,继承的区别和用意

    大学生涯,涉及到类的作用域,继承都是用的public 共有继承,当时也没想那么多,觉得共有继承多方便,多简单,反正没有太多的限制,不管是类的成员或者是基类的成员函数都可以访问.没有深究.其实这里面真是 ...

  10. [学习笔记]Java的public,protected,private,缺省的作用域

    0.引言 Java的访问指示符public,protected,private,缺省可以用来修饰类和方法. 1.作用域如下 具体如下: 作用域       当前类    同一package   子孙类 ...

随机推荐

  1. javascript 编辑网页

    javascript:document.body.contentEditable='true';document.designMode='on'; void 0 出处:http://zhidao.ba ...

  2. 如何:声明、实例化和使用委托(C# 编程指南)

    委托的声明如下所示: C#   public delegate void Del<T>(T item); public void Notify(int i) { } C#   Del< ...

  3. 向OSG视图Viewer发送消息

    句柄是以下面的方式传递给osgViewer::Viewer的,osgViewer::View.getCamera().setGraphicsContext(osg::GraphicsContext); ...

  4. 让TQ2440也用上设备树(2)

    作者 作者:彭東林 郵箱:pengdonglin137@163.com QQ:405728433 软件版本 Linux-4.10.17 概述 在之前的博客里介绍了TQ2440上移植设备树的方法,其实, ...

  5. Odoo进销存(采购、销售、仓库)入门教程 - 下

    转帖地址:http://blog.csdn.net/wangnan537/article/details/46475105 2. 进销存实务 2.1 销售产品 李逍遥接到客户苏州美尚邻里超市购买10只 ...

  6. codeforces Round #259(div2) C解题报告

    C. Little Pony and Expected Maximum time limit per test 1 second memory limit per test 256 megabytes ...

  7. 无线通信中FEC 编码原理及评价

    转自:http://blog.csdn.net/wiznet2012/article/details/7492146 大家好,前面我们给大家介绍了无线通信中FEC编码原理(1)和(2),今天继续献上F ...

  8. java项目实现流水号自动增长

    项目中有一个规则编号字段,从1开始,编号长度为5位,那么第一条数据编号就是00001. 实现的基本思路就是项目启动时,从数据库获取当前最大值,作为静态变量存储: 业务获取新的编码,考虑并发问题,获取编 ...

  9. Java Swing 使用非本地字体

    package reyo; import java.awt.Container; import java.awt.Font; import java.awt.FontFormatException; ...

  10. 神探夏洛克第一季/全集Sherlock1迅雷下载

    第一季 Sherlock Season 1 (2010)看点:夏洛克·福尔摩斯(Sherlock Holmes)是一个虚构的侦探人物,是由19世纪末的英国侦探小说家阿瑟·柯南·道尔所塑造的一个才华横溢 ...