对c++ public、protected、private关键字的理解
首先要明确一下:
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关键字的理解的更多相关文章
- 快速理解类的访问控制(public,protected,private)
接触过面向对象编程的朋友们都知道类中的访问控制符无非有三个,public, protected, private. 理解他就先从期望他达到的效果先说吧 Public: 使成员对于整个程序内(类内类外) ...
- JAVA修饰符类型(public,protected,private,friendly)
转自:http://www.cnblogs.com/webapplee/p/3771708.html JAVA修饰符类型(public,protected,private,friendly) publ ...
- 【转载】C++中public,protected,private访问
第一:private, public, protected 访问标号的访问范围. 假如我们约定: 类内部-----指的是当前类类型的定义中,以及其成员函数的声明和定义中: 类外部-----指的是不在当 ...
- JAVA类型修饰符(public,protected,private,friendly)
JAVA类型修饰符(public,protected,private,friendly) public的类.类属变量及方法.包内及包外的不论什么类均能够訪问:protected的类.类属变量及方法,包 ...
- C++:继承访问属性(public/protected/private)
• 公有继承(public) 公有继承在C++中是最常用的一种继承方式,我们先来看一个示例: #include<iostream> using namespace std; class F ...
- C++中public,protected,private派生类继承问题和访问权限问题
C++中public,protected,private派生类继承问题和访问权限问题 当一个子类从父类继承时,父类的所有成员成为子类的成员,此时对父类成员的访问状态由继承时使用的继承限定符决定. 1. ...
- php public protected private属性实例详解
php 类中函数和类变量都有三个属性:public protected private,具体什么时候使用什么属性好纠结,特意找了个实例,这样看起来更清晰. public 表示全局,类内部外部子类都可以 ...
- C++ 类访问控制(public/protected/private)
第一:private, public, protected 访问标号的访问范围. private:只能由1.该类中的函数.2.其友元函数访问. 不能被任何其他访问,该类的对象也不能访问. protec ...
- 【转】C++易混知识点5:实例讲解Public Protected Private作用域,继承的区别和用意
大学生涯,涉及到类的作用域,继承都是用的public 共有继承,当时也没想那么多,觉得共有继承多方便,多简单,反正没有太多的限制,不管是类的成员或者是基类的成员函数都可以访问.没有深究.其实这里面真是 ...
- [学习笔记]Java的public,protected,private,缺省的作用域
0.引言 Java的访问指示符public,protected,private,缺省可以用来修饰类和方法. 1.作用域如下 具体如下: 作用域 当前类 同一package 子孙类 ...
随机推荐
- Angular-表单动态添加删除
angular本身不允许去操作DOM,在angular的角度来说,所有操作都以数据为核心,剩下的事情由angular来完成.所以说,想清楚问题的根源,解决起来也不是那么困难. 前提 那么,要做的这个添 ...
- GIT远程仓库地址变更
将VS2013的解决方案添加到GIT源代码管理后会增加.gitattributes和.gitignore 2个文件以及.git目录 设置远程地址的文件在.git目录下的config文件中 直接修改上图 ...
- wp8.1 页面返回 页面导航
public The_second() public second() { this.InitializeComponent(); Frame frame = Window.Current.Conte ...
- Python之路【第十九章】:Django进阶
Django路由规则 1.基于正则的URL 在templates目录下创建index.html.detail.html文件 <!DOCTYPE html> <html lang=&q ...
- 【转载】如何破解受保护的excel密码
[工具] 1.电脑一台(安装有Microsoft Excel) 2.受保护excel一个 [步骤] 1.首先,打开受保护的Excel表格,按"ALT"+"F11" ...
- laravel5.1学习(1)--安装
主要学习的是laravel5.1版本,服务器用的是wampserver3.0.4集成环境: 首先,安装composer(windows系统) 下载地址:https://getcomposer.org/ ...
- 《 spring mvc 》学习计划
第一章:1月1日-1月2日 第二章:1月3日 第三章:1月4日 第四章:1月5日 第五章:1月6日-1月7日 第六章:1月8日 第七章:1月9日 第八章:1月10日 第九章:1月11日-1月12日 第 ...
- Ubuntu下查看机器信息
原文地址 测试机器的硬件信息 查看CPU信息(看到有8个逻辑CPU, 也知道了CPU型号) # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq ...
- JS学习之路
前言 接触js也有四五年的时间了,对js的认识也逐渐加深,想把自己这几年学习js的经历记录一下. 总则-都是对象,都是引用 在接触js前用的比较多的是java,在刚开始接触js的时候,老实讲,我是有点 ...
- C++笔记(二)------ 头文件
类似#include<string>与#include<string.h>等头文件的区别 标准的C++头文件没有.h扩展名,带有.h的头文件一般都是C语言的.例如#includ ...