Class

·C++
Virtual이란 무엇인가?Virtual의 정의는 '가상의' 이라는 의미를 포함한다. 부모를 상속받은 자식 클래스에서 재정의 할 것으로 기대하고 정해놓은 함수라고 이야기한다.그렇다면, 가상함수로 정의한것과 정의하지 않은 것은 명확한 차이를 보일까?컴파일러는 함수를 호출할 때 매우 복잡한 과정을 거치게 됩니다. 그렇기에 컴파일러는 함수를 호출하는 코드는 컴파일 타임에 고정된 메모리 주소로 변환시킵니다. 이것을 정적바인딩이라고 합니다.하지만 일반 함수를 오버 로딩하게 되면 정적바인딩으로 인해 문제가 될 수 있습니다. 가상함수가 아닌 보통의 경우 부모 클래스형 포인터로 멤버 함수를 호출할때, 컴파일러는 정적타입을 보고 이 타입에 맞는 멤버함수를 호출하기 때문입니다.정적바인딩으로 인해(컴파일 당시 호출될 함수의..
Koala Jung
'Class' 태그의 글 목록