c++ protected误区_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > c++ protected误区

c++ protected误区

 2013/11/14 20:48:05  z32556601  程序员俱乐部  我要评论(0)
  • 摘要:发现以前对protected的用法一直是错误的。protected的继承的访问权限其实是相对于类的,而不是对象。这么说可能无法理解。看例子:classBase{protected:inta;public:Base();};classChild{public:Child();test(Child&c){c.a=3;}test2(Base&b){b.a=3;//error}};intmain(){Childchild;Basebase;child.test()
  • 标签:c++ 误区
发现以前对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;};
发表评论
用户名: 匿名