开始一直以为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访问基类保护成员正确

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

相关文章:

  • 2021-10-28
  • 2022-03-03
  • 2022-12-23
  • 2022-12-23
  • 2021-12-12
猜你喜欢
  • 2021-11-09
  • 2022-12-23
  • 2021-05-25
  • 2022-12-23
  • 2021-05-26
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案