[C++] virtual function 동작 방식

C++에서 가상함수의 동작원리는 이렇습니다.


클래스에 한 개 이상의 가상 함수가 있을 경우, 컴파일러는 실제 호출되어야할 함수의 위치 정보를 가지고 있는 가상 함수 테이블을 만들고, 클래스 객체에는 가상 함수 테이블을 위한 포인터를 추가합니다. 일반적으로 가상 함수가 있는 객체는 가상 함수 테이블에 있는 함수만을 호출하는 원칙을 가지고 있습니다.


가상 함수의 단점은 다른 블로거 분의 자료를 참고 했는 데 첫 번째로 가상함수를 쓰면 가상함수 테이블을 만들기 때문에 메모리 공간의 소모가 일어나게 된다는 것, 두번째로 직접 메소드에 엑세스 하는 것이 아니라 가상함수 테이블을 거쳐서 간접적으로 접근하기 때문에 속도면에서 느려질 수 있다는 단점이 있다고 합니다.


참고 자료: http://pacs.tistory.com/entry/%EA%B0%80%EC%83%81-%ED%95%A8%EC%88%98-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC%EC%99%80-%EB%8B%A8%EC%A0%90

'Language & Solution > C++' 카테고리의 다른 글

[C++] volatile  (0) 2017.05.14
[C++] 얕은 복사, 깊은 복사  (0) 2017.05.14
[C++] virtual function 동작 방식  (0) 2017.05.13
[C++] lambda 식  (0) 2017.04.18
[C++] vector쓸 시 주의할 점  (0) 2017.04.14
[C++] 시간 측정  (0) 2017.04.14

이 글을 공유하기

댓글(0)

Designed by JB FACTORY