C++继承类成员访问权限修饰符详解

目录
  • 1. 前言
  • 2. 不同修饰下的类成员被访问权限
  • 3. 继承时的属性变化
  • 4. protected的作用
  • 总结

1. 前言

C++提供了三个修饰符来限定类成员的被访问权限,分别是public ,protected, private. 通过限定访问权限,可以达到程序编写者想要解决的安全问题和权限问题。这种权限的设置对于安全是非常必要的。

2. 不同修饰下的类成员被访问权限

  • public:被public修饰的类成员可以在任何地方被访问到。
  • protected:被protected修饰的类成员可以在类内部,子类内部和友元函数访问到。但不能通过类对象访问。
  • private:被private修饰的类成员可以在类内部和友元函数访问到,但不能在子类和通过类对象访问。

可以看出:

protected和private的区别是:private修饰的不能被继承到子类种访问。

protected和public的区别是:public修饰的可以直接通过类对象访问。

3. 继承时的属性变化

他们之间经过继承后的结合关系如下:

public protectded private
public public protected private
protected protected protected private
private private private private

4. protected的作用

加入基类中的某个函数,我们不想将其暴漏,所以不能设计为public,但又想在子类中能够访问到,这时就可以使用protected修饰,子类继承时可以访问到。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • 在C++中如何阻止类被继承详解

    这个话题是源自于一个面试题,我在网上查了一下有不少这方面的解说!我自己整理了一下,选择了一个自认为是最优方案! 我们从最简单的开始: 首先,大家都知道要阻止类被实例化,可以通过使用private or protected 关键字来声明默认构造函数.那么在阻止类被继承的时候,我们需要用到这个技巧.其次,阻止类被继承还需要使用private来控制继承的基类. namespace SamplePrivate { #ifdef NDEBUG class Sealed { protected: Seale

  • Java四种权限修饰符知识点详解

    Java中有四种权限修饰符 public protected (default) private 同一个类 yes yes yes yes 同一个包 yes yes yes no 不同包子类 yes yes no no 不同包非子类 yes no no no Warning:(default)并不是关键字"default",而是根本不写 知识点补充: Java语言4种访问权限修饰符 Java语言4种访问权限修饰符,但是仅有3个关键字,因为不写访问权限,在Java中被称为默认权限,或同包

  • c++中的继承关系

    1 什么是继承 继承概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能.这样产生新的类,称派生类.继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程. 面向对象的继承关系指类之间的父子关系.用类图表示如下: 2 为什么要有继承?/ 继承的意义? 因为继承是面向对象中代码复用的一种手段.通过继承,可以获取父类的所有功能,也可以在子类中重写父类已有的功能 以及 添加父类中没有的功能. 3如何理

  • Java中的权限修饰符(protected)示例详解

    前言 大部分来自:https://blog.csdn.net/justloveyou_/article/details/61672133.并在这个博客的基础上,加上了自己的一些理解. 权限控制表 修饰词 本类 同一个包的类 继承类 其他类 private √ × × × 无(默认) √ √ × × protected √ √ √ × public √ √ √ √ 关于protected 最近在看Effective Java时,遇到了一个关于protected修饰符的问题.这个问题中,对于它的认识

  • C++继承模式详解

    目录 继承 继承的概念 继承的定义 继承关系和访限定符 继承方式 父类和子类对象赋值转化 继承中的作用域 子类的默认成员函数 继承与友元 继承与静态成员 复杂的菱形继承 虚继承 继承的总结 继承 继承的概念 继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能.继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程. 继承的定义 上面的基类也可以叫父类,派生类也可以叫子类. 继承关系和访限定符 继承方式 接下来用代码测试上面的

  • C++继承类成员访问权限修饰符详解

    目录 1. 前言 2. 不同修饰下的类成员被访问权限 3. 继承时的属性变化 4. protected的作用 总结 1. 前言 C++提供了三个修饰符来限定类成员的被访问权限,分别是public ,protected, private. 通过限定访问权限,可以达到程序编写者想要解决的安全问题和权限问题.这种权限的设置对于安全是非常必要的. 2. 不同修饰下的类成员被访问权限 public:被public修饰的类成员可以在任何地方被访问到. protected:被protected修饰的类成员可以

  • java封装及四种权限修饰符详解

    1.对属性进行封装,使用户不能直接输入数据,我们需要避免用户再使用"对象.属性"的方式对属性进行赋值.则需要将属性声明为私有的(private). 2.我们将类的属性私有化(private),同时,提供公共的(public)方法来获取(getXxx)和设置(setXxx)此属性的值 封装性的体现,需要权限修饰符来配合 1.Java规定的4种权限(从小到大排列):private.缺省.protected .public 2.这4种权限可以用来修饰类及类的内部结构:属性.方法.构造器.内部

  • 举例详解Java中的访问权限修饰符

    访问权限符: (1)public: 对于成员来说:任何其他类都可以访问它们,不管在同一个包中还是在另外的包中. 对于类来说:    也是一样. (2)friendly: 对于成员老说:如果一个类的成员没有任何权限修饰,那么它门就是缺省包访问权限,用friendly来表示,注 意friendly不是Java中的关键字,这里是个人喜欢的方式用它表示而已.同一个包内其它类可以访问,但包外 就不可以.对于同一个文件夹下的.没有用package的classes,Java会自动将这些classes初见为隶属

  • Kotlin可见性修饰符详解

    目录 一. 四种修饰符的说明 二.在不同场景下各个修饰符声明的范围讲解 2.1.在包(package)中声明,即顶层声明的情况 2.1.1.测试同一个文件中声明不同的修饰符的范围 2.1.2.测试不同文件中声明不同的修饰符的范围 2.1.3.小结 2.2.在类(class)和接口(interface)中声明的情况 2.2.1.测试在类中声明的情况 2.2.2.测试在接口中声明的情况 2.2.3.小结 2.3.在构造函数中声明的情况 2.4.局部声明的情况 三.与Java中的可见性修饰符的对比 一

  • Vue.js中 v-model 指令的修饰符详解

    1 .lazy v-model 指令默认会在 input 事件中加载输入框中的数据(中文输入法中输入拼音的过程除外).我们可以使用 .lazy 懒加载修饰符,让其只在 change 事件中再加载输入框中的数据. html: <div id="app"> <input type="text" v-model.lazy="content" placeholder="请输入" value="初始值&quo

  • Java类成员访问权限控制知识总结

    一 前言 这篇文章是很基础的一文,没多大深度,对于开发人员必然是熟练于心.本篇文章的主题是为什么java要设置类成员访问级别?其原因也很简单,就是为了面向对象的封装特性:将类成员使用不同的访问级别控制,在数据封装后,其他的类成员想要访问当前类成员,就必须要有足够的权限才能访问:这样做的目的就是我可以随意修改不想让其他类成员没有权限访问的数据,只要约定好相关的协议,不影响其他类成员访问即可: 二 权限修饰词介绍 public 意指公有的意思,其修饰的成员权限最低,表示任何成员都可以访问:注意点是一

  • C++中访问权限的示例详解

    众所周知,C++面向对象的三大特性为:封装,继承和多态.下面我们就先对封装做一些简单的了解.封装是通过C++中的类来完成的,类是一种将抽象转换为用户定义类型的工具.类的定义如下: class circle { public: //成员变量 int m_L; int m_H; public: //成员函数(方法) double get_Square() { return m_L*m_H; } } 在上面的代码中,我们定义了一个 "circle" 类,主要包含三个部分:成员变量,成员方法和

  • 关于protected修饰符详解-源于Cloneable接口

    目录 今天在做对象拷贝的时候发现一个问题 接下来按照我们的思路写代码实现 为什么应用了Cloneable接口的类 通常还必须重写一个public的clone()方法 总结 Cloneable接口是一个空接口,仅用于标记对象,Cloneable接口里面是没有clone()方法,clone()方法是Object类里面的方法,默认实现是一个Native方法. 今天在做对象拷贝的时候发现一个问题 某类实现Cloneable接口后,还要重新实现Object类中的clone()方法: 感觉有点奇怪,这个类里

  • Vue.js学习笔记之修饰符详解

    本篇将简单介绍常用的修饰符. 在上一篇中,介绍了 v-model 和 v-on 简单用法.除了常规用法,这些指令也支持特殊方式绑定方法,以修饰符的方式实现.通常都是在指令后面用小数点"."连接修饰符名称. 一.v-model的修饰符 v-model 是用于在表单表单元素上创建双向数据绑定的指令.在 <input> 和 <textarea> 上,默认通过监听元素的 input 事件来更新绑定的属性值. 为了能明显的看到绑定属性值的变化,需要在Chrome浏览器中安

  • Python中的类与对象之描述符详解

    描述符(Descriptors)是Python语言中一个深奥但却重要的一部分.它们广泛应用于Python语言的内核,熟练掌握描述符将会为Python程序员的工具箱添加一个额外的技巧.为了给接下来对描述符的讨论做一些铺垫,我将描述一些程序员可能会在日常编程活动中遇到的场景,然后我将解释描述符是什么,以及它们如何为这些场景提供优雅的解决方案.在这篇总结中,我会使用新样式类来指代Python版本. 1.假设一个程序中,我们需要对一个对象属性执行严格的类型检查.然而,Python是一种动态语言,所以并不

随机推荐