- 하나 이상의 가상함수를 가지고 있는 클래스가 있을 경우 컴파일러는 가상함수 테이블을 만든다.
- 이 가상함수 테이블은 실제 객체가 참조하고 있는 함수의 포인터를 가지고 있다.
- C++에서는 객체의 함수 호출시 객체 자료형에 따른 함수 호출을 하는데, 함수에 virtual 키워드 붙어있을 경우 이 가상함수 테이블을 참조해서 함수를 호출하게 된다.
- 즉, virtual 함수는 가상 함수 테이블이라는 함수 포인터 배열을 참조하여 실제 객체가 가르키는 함수를 호출할 수 있게 해준다.
- 상속, 오버라이딩으로 대표되는 객체 지향적 프로그래밍의 핵심 키워드이다.
'Development > C++' 카테고리의 다른 글
가상함수 테이블의 메모리 구조 (0) | 2013.12.11 |
---|---|
함수 오버라이딩(overriding)과 오버로딩(overloading) (0) | 2013.12.11 |
[STL] vector에서 size(), reserve() 함수의 역할 (0) | 2013.12.11 |
복사생성자와 복사 대입 연산자 (0) | 2013.12.11 |
데이터(data), 스택(stack), 힙(heap) 영역 (0) | 2013.12.11 |