ITEM 16 :: EFFECTIVE C#


안녕하세요, 16번째 시간입니다. 벌써 한 주가 지나갑니다 하하하!


이번 챕터는 굉장히 간단한 내용이면서 당연한 내용을 짚고 넘어가는 챕터입니다. 사실 이에 해당하는 예외를 발견하기도 어렵지만, 결국 사용하면 좋지 않다라는 걸 알려주는 챕터니까요. 자. 간단하게 빠르게!

설명

  1. 생성자 내에서는 절대로 가상 함수를 호출해서는 안된다.

  2. 그 이유는 객체가 완전히 생성되기전 가상 함수를 호출하면 이상 동작이 발생하기 때문이다.

  3. 근데, 그것은 당연하다. 생성자가 완전히 실행되고 나서야 객체가 생성되고, 객체가 생성되어야 가상 함수의 몸통이 채워지는데, 생성자 내에서 호출하게되면 가상 함수가 생성되기 이전에 호출했기 때문에, 문제가 발생할 수 밖에 없다!

정리

사실 이 부분에 대해서는 크게 와닿지는 않았다. 생성자 내에서 가상 함수를 호출할 일이 많지도 않다고 책에도 서술되어있거니와, 실제로도 사용해본 적이 없기 때문이다. 그러니, 이렇게, 생성자 내에서 가상함수를 호출하면 안된다, 정도만 알고 넘어가면 좋을 것 같다.