[Basic C++] #20_virtual 키워드, vtable 오버헤드
C++ 개발에서 오버라이딩을 사용 시 주의할 점에 대해서 알아보겠습니다.
"전문가를 위한 C"의 9 항목, "클래스 상속 활용 테크닉"에 해당하는 내용입니다.
virtual 키워드 사용 이유
Java 언어는 모든 메소드를 무조건 virtual로 취급합니다.
이처럼, C++에서도 모든 메소드를 virtual로 취급하면 더 편리하지 않을까 생각합니다.
그럼에도 불구하고, "virtual" 키워드의 강조는 "vtable" 이용에 따른 오버헤드때문입니다.
"virtual" 메서드, 즉 가상 멤버 함수 호출을 위해 "vtable"이 담고 있는 포인터를 역 참조하여
실행할 메서드의 위치를 찾아오는 부가적인 작업이 필요합니다.
물론, 날로 발전하고 있는 CPU 성능에 따라, virtual 메소드의 사용은 나노초 이하의 작은 단위로 측정되고 있습니다. 성능 차이가 미미하지만, 알아 두는 것이 좋겠습니다.
'언어 > Basic C++' 카테고리의 다른 글
[Basic C++] #23_참조형 파라미터, 참조에의한 전달 (0) | 2022.05.08 |
---|---|
[Basic C++] #21_가상 상속 (0) | 2022.05.01 |
[Basic C++] #19_virtual, virtual의 내부 구현 (0) | 2022.04.30 |
[Basic C++] #18_오버라이딩의 특수한 경우 여섯 번째, 일반 메소드의 오버라이딩 (0) | 2022.04.30 |
[Basic C++] #17_오버라이딩의 특수한 경우 다섯 번째, 복제 생성자, 대입 연산자 (0) | 2022.04.24 |