• 对c++ public、protected、private关键字的理解


    首先要明确一下:

    1.这三个关键字在两种地方会用到,一个是对类的成员变量和成员函数修饰时(比如私有的成员变量,受保护的成员变量·,公有的函数),还有一种是对继承方式的修饰(比如公有继承,保护继承)。

    2.这三个关键字在对成员变量或成员函数修饰时表示外部(与内部相对,若一个类包括一个.h文件和.cpp文件,出了这两个文件就是外部了)对该成员的访问权限。在内部的话显然都是可以访问的

    下面我将举一个例子在说明这些关键字的运用和理解:

    class A

    {

    public:

      A();

      ~A();

      void funA();

    private:

      void funB();

    public:

      int a;

    protected:

      int b;

    private:

      int c;

    };

    先仔细看清楚外部(由该类在其他地方实例化的对象也属于外部,私有的和受保护的也不能访问)在访问该类各个成员变量和成员函数的访问权限,public修饰的都可以访问,private和protected修饰的不可以访问。

    接下来是跟继承联系起来(这在C++)开发中是不可避免的:

    class B : public A(公有继承)

    {

    public:

      B();

      ~B();

    private:

      int d;

    }

    这个时候,在B类内部,可以访问到A类的public成员和protected成员,其private成员不可访问,但是并不意味着A类的private成员不可继承,当你实例化B类对象的时候,其对象内存结构里也会有A类的private成员。

    说说protected这个关键字的事吧!

    其实private和public在修饰上已经很全面了,但是由于继承的关系,protected出现了。

    父类的某个成员变量不想让外部访问,可以用private修饰,但是这样的话子类也就无法访问该成员变量,为了同时满足这两种需求,protected关键字应运而生。

    protected关键字存在的意义,就在于可以让父类的protected成员既不能被外部访问,但又能被子类(内部)来访问。

  • 相关阅读:
    Jenkins发布遇到的问题
    js相关问题总结
    代码洁癖症轻度患者-页面显示状态判断解决方案
    eclipse没有打断点,项目确仍然要进入断点的问题。
    liunx新装tomcat之后,tomcat不能识别新发布的项目
    phpstorm+xdebug单步调试的配置
    laravel 路由前缀,路由名称前缀区别
    Specified key was too long ... 767 bytes
    postman 自动化测试
    Linux top输出st 的值过高导致系统负载过高
  • 原文地址:https://www.cnblogs.com/fudong/p/5035900.html
Copyright © 2020-2023  润新知