• 对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成员既不能被外部访问,但又能被子类(内部)来访问。

  • 相关阅读:
    升级MySQL5.7.22版本_总结记录
    初探分布式环境的指挥官ZooKeeper
    利用ROS工具从bag包中提取图片和.csv文件
    安装tensorflow出现的python-setuptools 20.7.0问题
    evo 评测工具修改背景颜色和线条等参数
    Ubuntu上下载百度网盘资料
    okvis 编译出现ceres-solver错误的解决办法
    opencv各个模块功能总结
    计算两幅图的单应矩阵,实现图像拼接
    特征提取与匹配、基础矩阵、单应矩阵、极限约束
  • 原文地址:https://www.cnblogs.com/fudong/p/5035900.html
Copyright © 2020-2023  润新知