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

    xiaoxiao2022-06-26  75

    原文地址:https://www.cnblogs.com/fudong/p/5035900.html

    首先要明确一下:

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


    最新回复(0)