c++中的protected 说明

在没有继承的情况下,protected跟private相同。在派生类的时候才出现分化。
上面那段英文前两条都很好理解,基类对象不能访问基类的protected成员,派生类中可以访问基类的protected成员。也就是说private成员是不能被继承的,只有public,protected的成员才可以被继承。
就是最后一条有些迷惑人,派生类对象如果要访问基类protected成员只有通过派生类对象,派生类不能访问基类对象的protected成员。
请注意 drived class和drived object:派生类和派生类对象。第一点和第二点都是针对派生类来说的。

对于第三点总结一句话:只有在派生类中才可以通过派生类对象访问基类的protected成员。


补充:

当一个子类从父类继承时,父类的所有成员成为子类的成员,此时对父类成员的访问状态由继承时使用的继承限定符决定。
1.如果子类从父类继承时使用的继承限定符是public,那么
   (1)父类的public成员成为子类的public成员,允许类以外的代码访问这些成员;
   (2)父类的private成员仍旧是父类的private成员,子类成员不可以访问这些成员;
   (3)父类的protected成员成为子类的protected成员,只允许子类成员访问;
2.如果子类从父类继承时使用的继承限定符是private,那么
   (1)父类的public成员成为子类的private成员,只允许子类成员访问;
   (2)父类的private成员仍旧是父类的private成员,子类成员不可以访问这些成员;
   (3)父类的protected成员成为子类的private成员,只允许子类成员访问;
3.如果子类从父类继承时使用的继承限定符是protected,那么
  (1)父类的public成员成为子类的protected成员,只允许子类成员访问;
  (2)父类的private成员仍旧是父类的private成员,子类成员不可以访问这些成员;
  (3)父类的public成员成为子类的protected成员,只允许子类成员访问;

猜你喜欢

转载自blog.csdn.net/u011306659/article/details/34844879
今日推荐