首先要明确一下:

1.这三个关键字在两种地方会用到,一个是对类的成员变量和成员函数修饰时(比如私有的成员变量,受保护的成员变量·,公有的函数),还有一种是对继承方式的修饰(比如公有继承,保护继承)。

2.这三个关键字在对成员变量或成员函数修饰时表示外部(与内部相对,若一个类包括一个.h文件和.cpp文件,出了这两个文件就是外部了)对该成员的访问权限。在内部的话显然都是可以访问的

下面我将举一个例子在说明这些关键字的运用和理解:

class A

{

public:

  A();

  ~A();

  void funA();

private:

  void funB();

public:

  int a;

protected:

  int b;

private:

  int c;

};

先仔细看清楚外部(由该类在其他地方实例化的对象也属于外部,私有的和受保护的也不能访问)在访问该类各个成员变量和成员函数的访问权限,public修饰的都可以访问,private和protected修饰的不可以访问。

接下来是跟继承联系起来(这在C++)开发中是不可避免的:

class B : public A(公有继承)

{

public:

  B();

  ~B();

private:

  int d;

}

这个时候,在B类内部,可以访问到A类的public成员和protected成员,其private成员不可访问,但是并不意味着A类的private成员不可继承,当你实例化B类对象的时候,其对象内存结构里也会有A类的private成员。

说说protected这个关键字的事吧!

其实private和public在修饰上已经很全面了,但是由于继承的关系,protected出现了。

父类的某个成员变量不想让外部访问,可以用private修饰,但是这样的话子类也就无法访问该成员变量,为了同时满足这两种需求,protected关键字应运而生。

protected关键字存在的意义,就在于可以让父类的protected成员既不能被外部访问,但又能被子类(内部)来访问。

对c++ public、protected、private关键字的理解的更多相关文章

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

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

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

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

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

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

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

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

  5. C++:继承访问属性(public/protected/private)

    • 公有继承(public) 公有继承在C++中是最常用的一种继承方式,我们先来看一个示例: #include<iostream> using namespace std; class F ...

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. Swift 必备开发库10个

    1.CryptoSwift swift加密库, 支持md5,sha1,sha224,sha256... github地址: https://github.com/krzyzanowskim/Crypt ...

  2. sshpass----------------sshfs--sftp(sublime)

    源码下载地址:http://sourceforge.net/projects/sshpass/   tar -zxvf sshpass-1.05.tar.gz cd sshpass-1.05 ./co ...

  3. linux系统文件权限

    Linux文件权限详解 文件和目录权限概述 在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录.通过设定权限可以从以下三种访问方式限制访问权限:只允许 ...

  4. JavaS:网页中的显示和隐藏

    <!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...

  5. maven配置

    java 环境变理 http://jingyan.baidu.com/article/f96699bb8b38e0894e3c1bef.html maven环境变理 http://www.cnblog ...

  6. [功能改进]Live Writer发博支持“建分类、加标签、写摘要”

    以前您在园子里用Windows Live Wirter发布博文是不是有以下三个不爽: 不爽1:如果想在发布随笔时新建分类并将随笔添加至该分类,需要先在博客后台添加分类,然后在Live Writer中刷 ...

  7. spring事务手动回滚

    @Transactional(rollbackFor = { Exception.class }) public JSONObject preSendMsg(AuthInfo authInfo, Me ...

  8. 安装ionic出现node-sass无法下载的解决方法

    解决方法: 修改C:\users\[用户名]下的.npmrc文件: registry=https://registry.npm.taobao.org sass-binary-site=https:// ...

  9. Spark:Join相关优化文章

    http://blog.csdn.net/lsshlsw/article/details/48975771 https://www.douban.com/note/499691663/ http:// ...

  10. Design and Analysis of Algorithms_Divide-and-Conquer

    I collect and make up this pseudocode from the book: <<Introduction to the Design and Analysis ...