C ++中的虚函数和纯虚函数之间的区别

下表显示了虚拟和纯虚拟功能之间的区别:

虚拟功能
纯虚函数
虚函数在类中有其定义。
纯虚函数没有定义。
声明:虚拟funct_name(parameter_list){。。。。。};
声明:虚拟funct_name(parameter_list)= 0;
它没有派生类的概念。
如果一个类至少包含一个纯虚函数,则将其声明为抽象。
如果需要,基类可以覆盖虚拟函数。
在纯虚函数派生类的情况下,必须明确重写纯虚函数。

虚拟功能

范例程式码

#include <iostream>
using namespace std;
class B {
   public:
      virtual void s() //virtual function {
         cout<<" In Base \n";
      }
};

class D: public B {
   public:
      void s() {
         cout<<"In Derived \n";
      }
};

int main(void) {
   D d; // An object of class D
   B *b= &d;// A pointer of type B* pointing to d
   b->s();// prints"D::s() called"
   return 0;
}

输出结果

In Derived

纯虚函数

范例程式码

#include<iostream>
using namespace std;
class B {
   public:
      virtual void s() = 0; // Pure Virtual Function
};

class D:public B {
   public:
      void s() {
         cout << " Virtual Function in Derived class\n";
      }
};

int main() {
   B *b;
   D dobj; // An object of class D
   b = &dobj;// A pointer of type B* pointing to dobj
   b->s();// prints"D::s() called"
}

输出结果

Virtual Function in Derived class