继承类中改变基类内public or protected属性

   1: class Base
   2: {
   3: private:
   4:     int m_nValue;
   5:  
   6: public:
   7:     Base(int nValue)
   8:         : m_nValue(nValue)
   9:     {
  10:     }
  11:  
  12: protected:
  13:     void PrintValue() { cout << m_nValue; }
  14: };
  15:  
  16: class Derived: public Base
  17: {
  18: public:
  19:     Derived(int nValue)
  20:         : Base(nValue)
  21:     {
  22:     }
  23:  
  24:     // Base::PrintValue was inherited as protected, so the public has no access
  25:     // But we're changing it to public by declaring it in the public section
  26:     Base::PrintValue;
  27: };

注意 Base::PrintValue; 该语句并没有添加()

posted on 2012-06-12 10:12 钟谢伟 阅读(1452) 评论(3)  编辑 收藏 引用

评论

# re: 改变基类中public or protected属性[未登录] 2012-06-12 17:04 春秋十二月

其实这不叫改变了基类的访问权限,而是在子类中又重新定义并覆盖了基类中的同名函数  回复  更多评论   

# re: 改变基类中public or protected属性 2012-06-13 16:02 钟谢伟

@春秋十二月
我觉得并没有进行重新定义,只是在继承类中进行了声明,改变了继承类中调用基类参数端口的性质。  回复  更多评论   

# re: 继承类中改变基类内public or protected属性 2012-06-14 11:04 春秋十二月

你说的对,纠正一下,查看了反汇编,不是重新定义,子类调用的还是基类的函数  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2012年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

常用链接

留言簿(1)

随笔档案

IT网站

My Friends

搜索

最新评论

阅读排行榜

评论排行榜