zoukankan      html  css  js  c++  java
  • C++关键字protected

    我们已经接触了C++的两个关键字:public和private。public是公开的,而private是私有的。

    在C++的类中,如果一个属性或方法被定义为public,那么这个属性或者方法可以被所有的类访问。如果一个属性或方法被定义为private,那么这个属性或者方法只能够被自己这个类访问,甚至子类也无法访问。

    那么问题来了,子类如果每次访问父类的属性都要使用getter或setter方法,那么会很不方便。而且如果父类不提供getter和setter方法的话,那就没有办法访问了。如果我们想子类直接访问父类的属性或者方法,那么可以使用protected关键字。

    它的使用方法和其他两个关键字一样:

    class ClassName {
    public:
        //public attributes or methods
    protected:
        //protected attributes or methods
    private:
        //private attributes or methods
    };

    这样一来,子类就可以直接访问父类的属性或方法而其他与父类无关的类无法直接访问。

    所以我们也可以得知访问权限级别的顺序:public > protected > private

    在继承中的public、private和protected

    父类成员访问级别

    public

    proteced

    private

    public

    public

    proteced

    private

    proteced

    proteced

    proteced

    private

    private

    private

    private

    Private

    也就是说,当继承时,我们的格式是:

    class ClassA: public ClassB {
        //...
    };

    那么ClassA中的所有属性和方法的访问权限和父类相同。

    如果我们在继承时使用了protected:

    class ClassA: protected ClassB {
        //...
    };

    那么ClassB中的public属性或者方法的访问权限就会变为protected,而其他的权限不变。

    如果我们在继承时使用了private:

    class ClassA: private ClassB {
        //...
    };

    那么ClassB中的所有属性或者方法的访问权限就会变为private。

  • 相关阅读:
    RPC细谈
    RPC浅谈
    动态规划
    libco 的定时器实现: 时间轮
    一次HTTP请求的完整过程——协议篇(DNS、TCP、HTTP)
    多个CPU、多核CPU以及超线程(Hyper-Threading)
    Linux下which、whereis、locate、find命令的区别
    warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
    使用OutputDebugString输出调试信息
    VS或windows用代码产生GUID
  • 原文地址:https://www.cnblogs.com/bwjblogs/p/12772629.html
Copyright © 2011-2022 走看看