关于C++继承的一些遗忘细节

      这两天偶尔翻看一本C++的书籍时,看到一个继承的知识点竟有点陌生的感觉。也许是之前恰好没接触过,也许是太久没接触罢了,现在究竟是忘记了。应该记下来,以作备忘,顺便罗嗦一下继承的概念,嗯嗯。

      那就是C++中的访问声明。

      众所周知,C++有三种继承方式,公有继承,保护继承,私有继承。公有继承,基类的公有和保护成员在派生类的性质不变。保护继承,基类的公有和保护成员在派生类均变成保护成员。保护成员是专为继承机制而设的,使其在派生类中可见,类外不可见。私有继承,基类的所有成员在派生类均变成私有成员。

      问题在于,当我用某种继承方式时,却想把基类的某个成员变成另外一种访问方式,怎样去实现呢?于是,这就用到了访问调节机制。

 

      class A

      {

          publice:

             int  get_data(int x,int y);

             int  data;

      }

 

      class B:private A

      {

          publice:

               A::get_data;

               int get_s(){return s;};

               int set_s(){s=x*y;};

          private:

               int s;

      };

 

      显然,如果不在B的publice里加入 A::get_data,那么get_data在B里将成为私有成员。而通过访问声明可以把它变成公有。

      需要注意的是:

      访问声明不可把声明对象说明为任何类型,也不能带参数和返回类型说明等。

      基类私有成员不能用于访问声明。

      不可降低或提升基类成员的可访问性,例如不能把基类的公有成员声明为保护,不能把保护声明为公有等。

      对重载函数名的访问声明将调整基类所有同名函数的访问域,但基类有不同访问域的函数则不能用于访问声明,派生类有与基类的同名函数也不能用于访问声明。

      看来已罗嗦了不少,啊!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值