본문 바로가기

공부/c++

virtual함수와 라이브러리와의 관계

반응형
만약 C++ 을 사용하지 않는다면, host 프로그램1에서 함수 포인터를 이용하여 기능들을 호출할텐데, C++ 을 사용할 경우에는 class의 member function 을 virtual 로 해 놓은 후, virtual로된 클래스를 상속받아서 virtual로된 클래스에 관련된 라이브러리의 내용을 overriding 시킨다. 그 후, host 프로그램에서는 부모 class의 pointer로 자식 클래스를 가리킨 후, virtual 로 된 함수를 호출하면 되겠다. 그림으로 보면 다음과 같다.


동적 라이브러리 사용 프로그램의 모식도

동적 library 를 사용하는 프로그램의 모식도.


host 프로그램은 compile 시 순수추상함수 (pure virtual function)를 호출한다. 동적으로 올라갈 library는 순수추상함수를 갖고 있는 클래스를 상속받은 후, host 프로그램에서 호출된 순수추상함수를 overriding 함으로써 기능을 제공한다. 그렇게 되면 host 프로그램에 의해 호출되는 '실제' 함수는 라이브러리에 있는 함수가 될 것이다.


반응형