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

C++의 가상 함수 및 런타임 다형성

<시간/>

C++의 가상 함수는 파생 클래스 개체의 종류를 모른 채 기본 클래스 포인터 목록을 만들고 파생 클래스의 메서드를 호출하는 데 사용합니다. 가상 기능은 런타임에 늦게 해결됩니다.

가상 기능의 주요 용도는 런타임 다형성을 달성하는 것입니다. 런타임 다형성은 기본 클래스 유형의 포인터(또는 참조)를 통해서만 달성할 수 있습니다. 또한 기본 클래스 포인터는 기본 클래스의 개체와 파생 클래스의 개체를 가리킬 수 있습니다. 위 코드에서 베이스 클래스 포인터 'b'는 파생 클래스의 'd' 객체 주소를 담고 있습니다.

예시 코드

#include<iostream>
using namespace std;
class B {
   public:
      virtual void s() {
         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