C++作用域限定符:private/public与protected
C++的作用域限定符其实涉及到了C++特性中的封装和继承。
public/private:涉及类的封装特性。对于一个类需要对外展示的部分,我们可以将其声明为public,对于不希望对外展示的,我们将其声明为private。
protected:涉及类的继承特性。对于一个子类想拥有父类的某个功能,但是父类又不希望子类对外展示,这时候就可以将成员声明为protected属性,只可以父类和子类使用。
注:本文中所说的类以及父类、子类均是抽象类的概念,不是类对象。
public
类的实现就是对外提供某些功能,外部通过调用类提供的某些接口引入类的功能。这就要求类成员必须声明为public,从而才能被外部所调用,这是类对外展示的部分。
而对外展示的功能函数有时候也依赖本类中其他的函数实现,但是被依赖的这部分我们只希望在类内部使用,不希望外部看到,这就涉及到了private特性。
private
定义为private属性的类成员,只能被本类调用,这部分成员在本类中是“隐藏”成员,即为了实现其他接口,“自己情愿退居幕后”,不向外展示。
proteced
其实protected是为继承而作的。类有继承的属性,如果一个父类有某个功能,而这个功能又不希望被外部看到,但是子类确实也需要这个功能,这个时候怎么办呢?此时就可以将父类的这个功能函数定义成protected属性的,子类继承后,该函数只能在父类和子类内部可以使用,外部无法使用。也就保存了该功能在父类中的初衷。
当然了上面说的都是作用域限定符在一个类内部的说明,private/public/protected也可以用于继承,其实到底要使用哪种继承特性,可以参考上面总结的作用域限定符在一个类中的作用,因为归根结底,类继承后就是一个类。
C++作用域限定符:private/public与protected的更多相关文章
- 浅析java修饰符之public default protected private static final abstract
浅析java修饰符之public default protected private static final abstract 一 修饰符的作用:用来定义类.方法或者变量,通常放在语句的最前端 ...
- JAVA 中的权限访问修饰符(public,protected,default,private )
JAVA中有四个权限访问修饰符:public,protected,default,private 注意:这里讲的是对类中属性和方法的访问权限,并不是类的访问权限 1.default:包访问权限 如果什 ...
- php作用域限定符
双冒号::被认为是作用域限定操作符,用来指定类中不同的作用域级别.::左边表示的是作用域,右边表示的是访问的成员. 系统定义了两个作用域,self和parent.self表示当前类的作用域,在类之外的 ...
- C++ 类学习笔记 :: 作用域限定符
类与封装的概念: 1.类: 类的实现.类的使用. 当使用类的时候,不需要关心实现的细节.当创建类的时候,才需要考虑到内部具体的实现细节. 2.类的封装: 成员变量,C++用于表示属性的变量. 成员函数 ...
- Java中类成员访问权限修饰符(public、protected、default、private)
1.public(公共的): 任何类都可以进行访问(最不严格). 2.protected(保护的): 同一包内的类以及其子类可以进行访问. 3.default(缺省的): 类中不加任何访问权限限定的成 ...
- 权限修饰符(public、protected、default、private)权限验证
一.测试方法 在authorityTest包中建类AuthorityValidate package authorityTest; public class AuthorityValidate { p ...
- (:: operator)作用域限定符的几种使用
一.(:: operator)解决局部变量与全局变量重名问题 ; int main() { ; cout<<var<<endl;//local variable cout< ...
- C++ public、protected、private 继承方式的区别
访问修饰符 public.protected.private,无论是修饰类内成员(变量.函数),还是修饰继承方式,本质上实现的都是可见性的控制. Difference between private, ...
- JAVA修饰符类型(public,protected,private,friendly)
转自:http://www.cnblogs.com/webapplee/p/3771708.html JAVA修饰符类型(public,protected,private,friendly) publ ...
随机推荐
- 三分法-洛谷P3382
wampserver没下下来,lcm莫比乌斯反演写挂了,splay树段错误, nobody ever knows writing bugs better than me 然后今晚要打cf,不如先写个三 ...
- Python中函数是否能使用全局变量?
Python函数中的变量,既可以使用局部变量(本地名字空间的变量),也可以使用全局变量(全局名字空间的变量),函数在执行查找变量只读时,先在局部变量中查找,找不到再查到全局变量中查找.因此当局部变量和 ...
- Python中数字按位取反的方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 Python中有个按位取反运算符:,但这个运算符并不是真正的按位取反,而是效果相当于原值乘以负一再减 ...
- Jmeter录制脚本-BadBoy
录制脚本方式: 1)Badboy录制Jmter脚本 2)Jmter代理服务录制脚本 方式一:Badboy录制脚本 安装Badboy 录制脚本 1.双击Badboy 2.输入URL 3.点击" ...
- Hbase的基本原理(与HIVE的区别、数据结构模型、拓扑结构、水平分区原理、场景)
重点:HBase的基本数据模型.拓扑结构.部署配置方法,并介绍通过命令行和编程方式使用HBase的基本方法. HBase:一种列存储模式与键值对相结合的NoSQL软件,但更多的是使用列存储模式,底层的 ...
- 前端性能测试(H5性能测试)
前端性能调优方法同样适用于H5. 1.H5前端性能知识点 学习前端性能,必须对HTTP协议有所了解. 1.1 浏览器渲染引擎 浏览器是Html解析和页面最终展示的工具. 浏览器的主要功能:将用户选择的 ...
- 二分查找——没有想象中的容易(详解各种变式,超深度理解,c++)
int binarySearch(int[] nums, int target) { int left = 0; int right = nums.length - 1; // 注意 while(le ...
- Jenkins Job间传递参数的一种方法
场景: Jenkins 中可以建多个Job,一般是主编译Job,多个子Job. 子Job要用主Job中的版本号,编译号. 1) 在主Job里面添加脚本命令: echo set MainVersion ...
- 如何在苹果电脑上创建一个html格式文件,并在浏览器正确打开
之前一直使用windows系统的电脑,创建文件很简单,改格式也非常的简单.但换了苹果电脑,如何创建一个HTML文件?却把我给整蒙了. 首先,为什么mac上不能直接新建文本文件? 因为mac一都是以应用 ...
- 返回sourceString 中出现的第一个 searchString 的索引
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...