Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 가상 함수와 순수 가상 함수의 차이점

<시간/>

다음 표는 가상 기능과 순수 가상 기능의 차이점을 보여줍니다.

가상 기능
순수 가상 기능
가상 함수는 클래스에 정의가 있습니다.
순수 가상 기능에는 정의가 없습니다.
선언:virtual funct_name(parameter_list) {. . . . .};
선언:virtual 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