istream1 C++ 독학 12일차 - 가상함수 구현원리, 다중 상속, istream, 형식플래그, streambuf, 조작자 가상함수의 구현원리 가상함수를 배우다보면,,, 모든 함수를 virtual 처리하면 안되나? 하는 생각이 든다. virtual로 함수를 처리하면 지들이 알아서 눈치껏 함수들을 처리해주니까. 실제로 자바는 모든 함수들이 virtual 함수로 선언된다고 한다. 그런데 c++는 사람들에게 virtual 키워드로 직접 선언하게 하는 이유는 오버헤드가 존재하기 때문이다. 일반 함수를 호출하는 것보다 가상함수를 호출하는데 시간이 더 오래 걸린다. virtual 클래스가 어떻게 구현되는지 생각해보자. 이런 클래스를 가정해보자. 컴파일러는 가상함수가 하나라도 있으면 가상함수 테이블을 만든다. 이렇게 구성이 된다. 그러면 가상함수를 실행하려 할 때에는 먼저 해당하는 클래스를 가서 함수를 탐색하는데, 가상함수면 직접 함수를.. 2021. 8. 17. 이전 1 다음