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


下表展示了虚函数和纯虚函数之间的区别

虚函数
纯虚函数
虚函数在其类中具有定义。
纯虚函数没有定义。
声明:virtual funct_name(parameter_list) {. . . . .};
声明:virtual funct_name(parameter_list)=0;
它没有派生类的概念。
如果一个类至少包含一个纯虚函数,那么它被声明为抽象函数。
如果需要,则基类可以覆盖虚函数。
在纯虚函数的情况下,派生类一定要覆盖该纯虚函数。

virtual function

示例代码

 在线演示

#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

pure virtual function

示例代码

 在线演示

#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

上次更新: 30-7-2019

6000+ 浏览量

开启你的 职业

通过完成课程获得认证

开始
广告