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

类成员的访问权限

1.jpg

继承方式

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<<me.name<<endl;
      return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,146评论 1 51
  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 7,944评论 0 3
  • C++ 面向对象编程 博客园地址:http://www.cnblogs.com/xiongxuanwen/p/42...
    先之阅读 3,892评论 0 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,931评论 18 399
  • 《丰田生产方式》,21页 你对于一种现象连续问5个“为什么”了吗?这样做,说来容易,做起来就难了!比如,一台机器不...
    幸福虚度的野人阅读 2,415评论 0 0