본문 바로가기
Development/C++

virtual

by KingCat 2013. 12. 11.

- 하나 이상의 가상함수를 가지고 있는 클래스가 있을 경우 컴파일러는 가상함수 테이블을 만든다.

 

- 이 가상함수 테이블은 실제 객체가 참조하고 있는 함수의 포인터를 가지고 있다.

 

- C++에서는 객체의 함수 호출시 객체 자료형에 따른 함수 호출을 하는데, 함수에 virtual 키워드 붙어있을 경우 이 가상함수 테이블을 참조해서 함수를 호출하게 된다.

 

- 즉, virtual 함수는 가상 함수 테이블이라는 함수 포인터 배열을 참조하여 실제 객체가 가르키는 함수를 호출할 수 있게 해준다.

 

- 상속, 오버라이딩으로 대표되는 객체 지향적 프로그래밍의 핵심 키워드이다.