본문 바로가기

C#

Virtual Table

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