• C++类中的访问权限问题


    纠结的东西:

    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的派生类)
    公有继承 公有成员 公有成员 公有成员
    私有成员 (无) (无)
    保护成员 保护成员 保护成员
    私有继承 公有成员 私有成员 (无)
    私有成员 (无) (无)
    保护成员 私有成员 (无)
    保护继承 公有成员 保护成员 保护成员
    私有成员 (无) (无)
    保护成员 保护成员 保护成员
  • 相关阅读:
    how to singleton pattern !
    n6600 支持keepalive吗?
    6600的几个不可能的任务!
    Heyy.... i am back with 100 Apps for nokia 6600!
    http client chunked implement via sun
    Excel公司正式发售WinA&D 4.0
    快速开发rails、==常用插件==
    单独使用ActionMailer作为邮件发送器为迩的程序发送报告
    如何在win7上添加自动启动项
    gem install 报错或是太慢,gem install 本地安装
  • 原文地址:https://www.cnblogs.com/dongsheng/p/3344011.html
Copyright © 2020-2023  润新知