왜 멤버함수는 기본적으로 virtual이 아닌가요?
왜냐하면 많은 클래스가 기본 클래스(부모 클래스)로 사용하기위해 디자인되지 않기 때문입니다.
예를 들자면, 복소수 클래스를 보세요
또한, 가상함수가 포함된 클래스의 객체들은 가상함수 호출 메커니즘때문에 별도의 공간이 필요한데, 적형적으로 객체당 1 워드정도가 필요합니다. 이 오버헤드는 중요할 수 있고, 다른 언어(예를들면C 혹은 포트란)의 데이터에 대한 레이아웃 호환성의 걸림돌이 될 수 있습니다. 1
디자인의 이론적 해석을 더 알고싶으면 Design and Evolution of C++을 참고하세요.
- 가상함수 테이블을 가르킬 포인터 1개 필요하니까 1워드 드는 것 같다. [본문으로]
'번역 > Bjarne Stroustrup's C++ Style and Technique FAQ' 카테고리의 다른 글
Why are destructors not virtual by default? (0) | 2019.02.26 |
---|---|
Why don't we have virtual constructors? (0) | 2019.02.26 |
Why do I have to put the data in my class declarations? (6) | 2019.01.31 |
Why do my compiles take so long? (4) | 2019.01.15 |
Why doesn't my constructor work right? (4) | 2019.01.15 |
댓글