WEB开发网
开发学院软件开发VC VC++深入详解:函数的覆盖和隐藏 阅读

VC++深入详解:函数的覆盖和隐藏

 2008-11-24 19:39:06 来源:WEB开发网   
核心提示: 当隐藏发生时,如果在派生类的同名函数中想要调用基类的被隐藏函数,VC++深入详解:函数的覆盖和隐藏(3),可以使用“基类名::函数名(参数)”的语法形式,例如,我们再给出一个例子,留给读者思考,要在Derived类的fn(int)方法中调用Base类的fn()方法,

当隐藏发生时,如果在派生类的同名函数中想要调用基类的被隐藏函数,可以使用“基类名::函数名(参数)”的语法形式。例如,要在Derived类的fn(int)方法中调用Base类的fn()方法,可以使用Base::fn()语句。

有的读者可能会想,我怎样才能更好地区分覆盖和隐藏呢?实际上只要记住一点:函数的覆盖是发生在派生类与基类之间,两个函数必须完全相同,并且都是虚函数。那么不属于这种情况的,就是隐藏了。

最后,我们再给出一个例子,留给读者思考,代码如例2-22所示(EX09.CPP)。

例2-22

  #include <iostream.h>
  class Base
  {
  public:
     virtual void xfn(int i)
     {
       cout<<"Base::xfn(int i)"<<endl;
     }
     void yfn(float f)
     {
       cout<<"Base::yfn(float f)"<<endl;
     }
     void zfn()
     {
       cout<<"Base::zfn()"<<endl;
     }
  };
  class Derived : public Base
  {
  public:
     void xfn(int i) //覆盖了基类的xfn函数
     {
       cout<<"Drived::xfn(int i)"<<endl;
     }
     void yfn(int c) //隐藏了基类的yfn函数
     {
       cout<<"Drived::yfn(int c)"<<endl;
     }
     void zfn()   //隐藏了基类的zfn函数
     {
       cout<<"Drived::zfn()"<<endl;
     }
  };
  void main()
  {
     Derived d;
     Base *pB=&d;
     Derived *pD=&d;
     pB->xfn(5);
     pD->xfn(5);
     pB->yfn(3.14f);
     pD->yfn(3.14f);
     pB->zfn();
     pD->zfn();
  }

上一页  1 2 3 

Tags:VC 深入 详解

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接