DEV Community

yeonseong
yeonseong

Posted on

virtual in C++

implement virtual in C++

C++에서 클래스를 컴파일하면 그 클래스의 모든 메서드를 담은 바이너리 객체가 생성됨.

컴파일러는 virtual로 선언되지 않는 메서드를 호출하는 부분을 정적 바인딩(static binding)함.

virtual로 선언하면 vtable이라는 특수한 메모리 영역을 활용하여 메서드를 호출함. vtable을 보고 적합한 버전의 메서드를 실행함. (동적 바인딩, dynamic binding)

virtual 메서드가 하나 이상 정의도니 클래스마다 vtable이 하나씩 있고, vtable에 대한 포인터를 가짐.

정적바인딩(static binding)

이른 바인딩(early binding)이라고도 함. 컴파일 시간에 바인딩이 결정되는 것

Top comments (0)