开始一直以为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访问基类保护成员正确
直接通过基类对象访问错误