Computer >> Máy Tính >  >> Lập trình >> C ++

Sự khác biệt giữa một hàm ảo và một hàm thuần ảo trong C ++

Bảng sau cho thấy sự khác biệt giữa Chức năng Ảo và Chức năng Ảo thuần túy:

Chức năng ảo
Chức năng ảo thuần túy
Hàm ảo có định nghĩa của chúng trong lớp.
Hàm ảo thuần túy không có định nghĩa.
Khai báo:virtual funct_name (parameter_list) {. . . . .};
Khai báo:virtual funct_name (parameter_list) =0;
Nó không có khái niệm về lớp dẫn xuất.
Nếu một lớp chứa ít nhất một hàm thuần ảo, thì nó được khai báo là trừu tượng.
Nếu được yêu cầu, lớp cơ sở có thể ghi đè một hàm ảo.
Trong trường hợp lớp dẫn xuất hàm thuần ảo chắc chắn phải ghi đè hàm thuần ảo.

chức năng ảo

Mã mẫu

#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;
}

Đầu ra

In Derived

chức năng ảo thuần túy

Mã mẫu

#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"
}

Đầu ra

Virtual Function in Derived class