c++类继承中的using声明,派生类中用using声明改变基类成员的访问权限

    
    以下观点用visual studio 2008 c++ 试验可行,但难免有误,如发现错误请指出。在《c++primer第四版中文》p572页的注解中指出:“派生类可以恢复继承成员的访问级别,但不能使访问级别比基类中原来指定的更严格或更宽松”。亲自用visual studio 2008试验了一下,怀疑书上观点有误,特别写出和大家交流,以找出正确答案。

    在基类中的private成员,不能在派生类中任何地方用using声明。
    在基类中的protected成员,可以在派生类中任何地方用using声明。当在public下声明时,在类定义体外部,可以用派生类对象访问该成员,但不能用基类对象访问该成员;当在protected下声明时,该成员可以被继续派生下去;当在private下声明时,对于派生类定义体外部来说,该成员是派生类的私有成员。
    在基类中的public成员,可以在派生类中任何地方用using声明。具体声明后的效果同基类中的protected成员。

    例:
 class A 
 {
 public:
  int f1; 
 protected:
  int f2;
 private:
  int f3;
 };

 //如下声明只是举例,实际声明中不能重复声明同一成员。
 class B : public A  //这里的访问标号可以是任意,它只影响没有被显示声明的从基类继承的成员的访问
 {
 public:
  using A::f1; //从基类继承的public成员,此处声明后可以被外部访问
  using A::f2; //从基

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值