纯虚函数

Avi*_*jee 1 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();
              } 
Run Code Online (Sandbox Code Playgroud)

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

Hen*_*man 13

这与func虚拟无直接关系,您总是需要在类中声明它:

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

   void func();  // add this
};

void B::func()
{
   cout<<"In B"<<endl;
}
Run Code Online (Sandbox Code Playgroud)

  • 否则它将不知道B定义了func并将尝试在A中使用纯虚拟版本,它不能,因为它是纯虚拟的 (3认同)