C++中,对protected 成员理解

开始一直以为protected 只能通过派生类对象在成员函数中访问,然后才发现还可以在派生类成员函数中通过派生类访问其基类的protected 成员

class A
{
public:
    A(const string &str=""):name(str){}
    ~A(){}
protected:
    string name;
};
class B:public A
{
public:
    void func(const B& b,const A &a){
        cout << name << endl;//right
        cout << b.name << endl;//right
        cout << a.name << endl;//error can't visit protected member
    }
};

访问本身基类保护成员正确

通过派生类对象b访问基类保护成员正确

直接通过基类对象访问错误

posted on 2017-03-08 13:57  Just_Boy  阅读(982)  评论(0编辑  收藏  举报