欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

c++ protected误区

程序员文章站 2022-07-13 10:49:22
...
发现以前对protected的用法一直是错误的。

protected的继承的访问权限其实是相对于类的,而不是对象。这么说可能无法理解。看例子:

class Base{
protected:
    int a;
public:
    Base();
};

class Child{
public:
    Child();
    test(Child &c){
        c.a = 3;
    }

    test2(Base &b){
        b.a = 3;//error
    }
};

int
main(){
    Child child;
    Base base;
    child.test();//right
    child.test2(b);//error, 因为protected的作用范围其实是相对于类。所以只要是child类的实例都可以在类的范围内直接访问protected成员。
}

test2要想工作得写一个get_a();
Base::get_a(){return a;};
相关标签: c++