纯虚函数

时间:2009-12-10 10:14:23

标签: c++ virtual-functions

在C ++程序中:

              #include<iostream.h>
              class A
              {
                     public: virtual void func()=0;
              };
              class B:public A
              {
                     public: void show()
                             {
                                   func();
                             }
              };
              void B::func()
              {
                      cout<<"In B"<<endl;
              }
              int main()
              {
                   B b;
                   b.show();
              } 

如果在类B的主体内重新定义了虚函数func(),则没有错误。但是在使用范围解析运算符时,编译器会抛出错误。 那是为什么?

2 个答案:

答案 0 :(得分:13)

这与虚拟的func没有直接关系,你总是需要在课堂上声明它:

class B:public A
{
   public: void show()
   {
      func();
   }

   void func();  // add this
};

void B::func()
{
   cout<<"In B"<<endl;
}

答案 1 :(得分:4)

您必须声明重新定义B类中的成员函数func()。

class B:public A
{
   virtual void func();
public:
   void show() {func(); }
};