zoukankan      html  css  js  c++  java
  • C++类中的访问权限问题

     
    引用http://www.cnblogs.com/dongsheng/p/3344011.html

    纠结的东西:

    private,public,protected方法的访问范围.(public继承下)
    private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问. 
    protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问 
    public: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问
    注:友元函数包括两种:设为友元的全局函数,设为友元类中的成员函数

    A.在无继承的情况下,类内部可以随意访问,即使是private;类外部无法访问protected/private成员 .

    B.在有继承的情况下,

           (先确定类继承方式,

            再确定继承后子类的新成员属性,

            最后确定子类内部/外部的访问权限:!!!此时即使是在子类的内部也不能访问父类的private

             )

    1.若是public继承的话,父类的public/protected/private属性继承到子类时,均不会变化(新成员)

                  在子类内部访问时,无法访问父类的private(对比:在无继承时,类内可随便访问)

                  在子类外部访问时,无法访问子类的新成员protected/private

    2.若是protected继承的话,父类的public/protected/private属性继承到子类时,会变化为(新成员)protected/protected/private

                  在子类内部访问时,无法访问父类的private(对比:在无继承时,类内可随便访问)

                  在子类外部访问时,无法访问子类的新成员protected/private

    3.若是private继承的话,父类的public/protected/private属性继承到子类时,会变化为(新成员)private/private/private

                  在子类内部访问时,无法访问父类的private(对比:在无继承时,类内可随便访问)

                  在子类外部访问时,无法访问子类的新成员protected/private

    第五:保护继承与私有继承

             从上面的结果来看,私有继承和保护继承作用完全一样。仔细一想其实还是有区别,区别是如果派生类再一次去派生其它类时,对于刚才的私有继承来说,再派生的类将得不到任何成员。而对于刚才的保护继承,仍能够得到基类的公有和保护成员。

     A类(基类)B类(A的派生类)C类(B的派生类)
    公有继承 公有成员 公有成员 公有成员
    私有成员 (无) (无)
    保护成员 保护成员 保护成员
    私有继承 公有成员 私有成员 (无)
    私有成员 (无) (无)
    保护成员 私有成员 (无)
    保护继承 公有成员 保护成员 保护成员
    私有成员 (无) (无)
    保护成员 保护成员 保护成员
  • 相关阅读:
    jquery02
    jquery01
    oracle04_plsql
    oracle03
    oracle02
    oracle01
    selenium
    爬取京东商品信息并保存到MongoDB
    python pymongo操作之增删改查
    MongoDB 数据库表删除
  • 原文地址:https://www.cnblogs.com/wj0816/p/6569048.html
Copyright © 2011-2022 走看看