본문 바로가기
번역/Bjarne Stroustrup's C++ Style and Technique FAQ

Why are member functions not virtual by default?

by 겜게준 2019. 2. 26.

왜 멤버함수는 기본적으로 virtual이 아닌가요?


왜냐하면 많은 클래스가 기본 클래스(부모 클래스)로 사용하기위해 디자인되지 않기 때문입니다.

예를 들자면, 복소수 클래스를 보세요


또한, 가상함수가 포함된 클래스의 객체들은 가상함수 호출 메커니즘때문에 별도의 공간이 필요한데, 적형적으로 객체당 1 워드정도가 필요합니다[각주:1]. 이 오버헤드는 중요할 수 있고, 다른 언어(예를들면C 혹은 포트란)의 데이터에 대한 레이아웃 호환성의 걸림돌이 될 수 있습니다.


디자인의 이론적 해석을 더 알고싶으면 Design and Evolution of C++을 참고하세요.

  1. 가상함수 테이블을 가르킬 포인터 1개 필요하니까 1워드 드는 것 같다. [본문으로]

댓글