Virtual Table
가상함수를 정의하게 되면 가상 테이블이 생성된다.
가상테이블에는 해당 가상함수의 주소가 담겨있어 주소를 찾아서 호출을 하게 된다.
virtual / new 선언 차이
변수를 선언할 때 참조 타입과 실타입이 다른 객체를 선언한다고 가정하면 가상함수로 만들어진 함수를 호출했을 때
virtual로 override된 함수는 실타입의 객체의 함수가 호출되며,
new는 상속된 멤버를 가리기 위함으로 참조타입의 함수가 호출됩니다.
C#은 컴파일 타임에 가상테이블이 생성되며, C++은 각각의 생성자 호출시점에 생성된다.
작성자가 생각하기로는
C#은 C++을 개선하면서 만들었기 때문에 생성자 호출시점에서 가상테이블이 생성되면 오버헤드가 발생할수있기 때문에 컴파일타임에 한번에 생성되는 쪽으로 발전되었다라고 생각함
728x90
'C#' 카테고리의 다른 글
C# - Coroutine (0) | 2024.07.06 |
---|---|
C# - 2 (0) | 2024.05.19 |
C# - Custom Type2 (2) | 2024.04.11 |
Class (0) | 2024.04.09 |
C# (0) | 2024.04.09 |