C++과 C#의 가상 함수 처리 비교


C++과 C#의 가상 함수 처리 비교

책 예제 소스코드 위 소스코드는 '이팩티브 C# (3판) 아이템 16: 생성자 내에서는 절대로 가상 함수를 호출하지 말라'에 소개된 소스코드이다. 이 책에서는 위 코드의 출력 결과를 예상해보라고 하며, C++과 C#의 가상 함수에 대한 처리가 다름을 설명하는데 나는 사실 위 코드는 수수께끼를 위한 예제 코드라고 생각한다. 위 C# 코드의 정답은 "Set by initializer" 가 호출된다. C# 추상 클래스 abstract 동작을 좀 더 명확하게 하기 위해 추상 클래스로 바꾸고 예상되는 호출 흐름에 맞게 주석을 달았다. C#의 추상 클래스는 생성할 때부터 Derived 클래스라는 걸 알고 있기 때문에 VFunc가 모호한 상황은 발생하지 안 지..........



원문링크 : C++과 C#의 가상 함수 처리 비교