• C++学习笔记14 -访问权限问题


    一、什么是访问权限问题

    1、public访问权限是全局的

    • public的成员变量,在类的成员方法中可以直接访问
    • public的成员变量,在任何外部代码中可以通过类的对象来直接访问
    • public的成员方法,在类内其他成员方法中可以直接调用
    • public的成员方法,在任何外部代码中可以通过类的对象来直接访问
    • public就是完全不设防

    2、private访问权限

    • private的成员变量,在类的成员方法中可以直接访问
    • private的成员变量,在任何外部代码中不可以通过对象来直接访问
    • private的成员方法,在类内其他成员方法中可以直接调用
    • private的成员方法,在任何外部代码中不可以通过对象来直接访问
    • private就是对内不设防,对外完全设防的

    3、更多关于访问权限的问题

    • protected是第三种访问权限修饰符,如果有必要还可以有第四种甚至更多
    • 访问权限叠加类的继承、static、friend等特性后才更加显出复杂性和威力

    二、c++为什么要设计访问权限

    1、访问权限作用1:保护内部资源

    • private的成员是class内部使用,外部没必要直接访问(读取或赋值),所以干脆在语法上让你看不见
    • 访问权限的保护是一种语法层面的保护,而非硬件上限制访问,硬件做不了这么细致
    • 最终目的也是为了整个程序更安全

    2、访问权限作用2:隐藏外部无需关心的细节

    • 将class内部使用而外部绝不会用到的成员变量隐藏起来,以免干扰外部或者不小心被外部修改了
    • 隐藏细节可以降低使用类库的人的难度,调用时只看到对我有用的东西
    • 这个隐藏其实是把class的作者和使用者专业分工,是很有必要的

    3、这就是面向对象的封装特性

    • 封装特性的体现之一就是抽象,抽象的一层意思就是隐藏掉不必要的细节
    • 封装特性的体现之一就是组织和保护,便于整个整体和外部更合理的交流

    三、访问权限带来的一些新编程理念

    1、只读或只写变量

    • 问题:你的class中需要一个变量,但是希望外部只能读不能写,怎么实现?
    • 分析:硬件、OS、编程语言都未提供这样的RO或WO的机制,只能间接实现了
    • 解决方案:利用访问权限,将成员变量设计为private,然后再通过封装成员方法来实现
    • 如果只提供read方法那就是只读成员,如果只提供write方法那就是只写成员
    • 这样的成员经常被称为属性(property),C#等高级编程语言中就源生支撑这种新编程思想

    2、复杂程序架构化

    • 简单程序规模小,参与人少,靠人本身的逻辑能力就能保证实现和质量
    • 复杂程序规模大,参与人多,协作成本高,水平良莠不齐,必须靠架构式设计才能保证实现和质量
    • 架构化设计中权限管控的思想很重要,每一层的访问权限和主要关注点都不同

    3、为什么C语言不需要这些

    • C主要做裸机开发和OS内核开发,都是独立一体化程序,不隔离,所以不需要也没法管控权限
    • C程序一般规模小,不需要管控权限
    • C程序强调性能,而权限管控一定程度会牺牲性能,凡事都有两面性。
    • 越是高级语言,编程越偏业务逻辑,就越需要权限管控和架构思想这些。
  • 相关阅读:
    基于python的AI五子棋实现(极大极小值搜索和alpha beta剪枝)
    十五、C++11常用新特性—Lambda表达式
    el-select 绑定对象和el-checkbox-group用法
    构建创新增值能力优势,康铂酒店突围中端酒店市场!
    Python 基础记录 - 第1课
    大模型LLM深入浅出、主打通俗易懂
    [2022 CISCN]初赛 web题目复现
    UE4 剖析工具
    Ubuntu释放VirtualBox虚拟硬盘文件大小
    Alter database open fails with ORA-00600 kcratr_nab_less_than_odr
  • 原文地址:https://blog.csdn.net/qq_38958704/article/details/126291163