C++继承权限和继承方式

类成员的访问权限

C++继承权限和继承方式_第1张图片
1.jpg

继承方式

C++继承权限和继承方式_第2张图片
2.jpg
  1. 派生类的成员(及友元)对基类成员的访问权限只与基类中的访问说明符有关。派生列表中访问说明符的作用是控制派生类用户对于基类成员的访问权限,注意是派生类的用户。
  2. 基类成员在派生类中的访问权限不得高于继承方式中指定的权限。也就是说,继承方式中的 public、protected、private 是用来指明基类成员在派生类中的最高访问权限的。
  3. 不管继承方式如何,基类中的 private 成员在派生类中始终不能使用(不能在派生类的成员函数中访问或调用)。如果希望基类的成员能够被派生类继承并且毫无障碍地使用,那么这些成员只能声明为 public 或 protected;只有那些不希望在派生类中使用的成员才声明为 private。
  4. 如果希望基类的成员既不向外暴露(不能通过对象访问),还能在派生类中使用,那么只能声明为 protected。
  5. 实际上,基类的 private 成员是能够被继承的,并且(成员变量)会占用派生类对象的内存,它只是在派生类中不可见,导致无法使用罢了。private 成员的这种特性,能够很好的对派生类隐藏基类的实现,以体现面向对象的封装性。
  6. 在派生类中访问基类 private 成员的唯一方法就是借助基类的非 private 成员函数,如果基类没有非 private 成员函数,那么该成员在派生类中将无法访问(除非使用下面讲到的 using 关键字)。

使用using声明

通过在类的内部使用using声明语句,我们可以将该类的直接或间接基类中的任何可访问成员(非私有成员)标记出来,改变其访问权限。

class A{
protected:
    string name;
};

class B:publicA{
public:
    using A::name;//将继承来的name成员的访问权限改为public
};
int main()
{
      A me;
      me.name="aaaaa";//可以访问name成员了
      cout<

你可能感兴趣的:(C++继承权限和继承方式)