zoukankan      html  css  js  c++  java
  • C++ 中权限问题的思考

    基本介绍转自:https://blog.csdn.net/zhangzheng0413/article/details/41541845

    一、基本介绍

    1、类成员权限:

    public的定义:所有范围都能访问。表明该数据成员、或成员函数是对所有用户开放的;

      白话:所有用户都可以直接调用。

    protected的定义:类自身、子类能访问;

      白话: 对于子女、朋友来说,就是public的,可以自由使用,没有任何限制;而对于其他的外部class,protected就变成private。

    private的定义:类自身能访问;

      白话:私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。

    二、继承方式

    子类对父类的继承方式:public、protected与private是在以上定义基础上定义了子类中父类部分的成员(public与protected)在被继承后对外界的访问权限

    三、总结

      以上所述:类的内部和外界之分,类内部指的是在类所定义的范围内,即class A{};  在括号内的作用范围之内;类外部(或换一种说法,外界访问),指的是1、通过实例化一个对象,去访问类的成员class A 。2、通过继承的方式去访问class A。3、通过friend的方式去访问class A

      因此,

    1、不考虑继承时,单对类定义本身而言,即class A{}; 内,三种权限的声明,对本类内部的方法访问不产生任何约束,其实就是“自己看自己”;而有效的时候,是对外界访问本类方法和数据所做出的约束。

    2、而本类被外部访问时,

    2.1 非继承方式,依据类内本身的权限划分;

      friend: 除private以外的全部;(待确认)

      类对象访问:public全范围内的内容;

    2.2 继承方式访问时,加一层继承方式权限约束,最终权限向下看齐;

      这里可以理解为,当前类将父类继承过来的内容(除private外)按照最终权限,挪到了当前类对应的权限下;  后面再被继承或者被访问时按照这个权限即可。

      

  • 相关阅读:
    SpringBoot分布式篇Ⅷ --- 整合SpringCloud
    SpringBoot分布式篇Ⅶ --- 整合Dubbo
    java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"
    小学数学题
    GoLang GRPC使用
    GoLang Socket 聊天实例
    golang Redis运用
    go mod 运用
    Golang Socket编程小实例
    GoLang协程和管道
  • 原文地址:https://www.cnblogs.com/liwe1004/p/15253314.html
Copyright © 2011-2022 走看看