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

C++의 인라인 가상 함수

<시간/>

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

가상 기능의 주요 용도는 런타임 다형성을 달성하는 것입니다. 인라인 함수는 코드의 효율성을 높이는 데 사용됩니다. 인라인 함수의 코드는 인라인 함수가 호출될 때마다 컴파일 타임에 인라인 함수 호출 시점에서 대체됩니다.

기본 클래스 참조 또는 포인터를 사용하여 가상 함수를 호출할 때마다 인라인할 수 없지만 해당 클래스의 참조 또는 포인터 없이 개체를 사용하여 호출할 때마다 컴파일러가 컴파일 시간에 개체의 정확한 클래스를 알고 있기 때문에 인라인될 수 있습니다. 피>

예시 코드

#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) {
   B b;
   D d; // An object of class D
   B *bptr = &d;// A pointer of type B* pointing to d
   b.s();//Can be inlined as s() is called through object of class
   bptr->s();// prints"D::s() called"
   //cannot be inlined, as virtualfunction is called through pointer.
   return 0;
}

출력

In Base
In Derived