반응형

가상함수를 생성자와 소멸자에 넣으면 호출이 안된다고 되어있어서

실험삼아 책에 나와있는 코드를 테스트 해 보았는데 호출이 되었습니다. -_-;;

그리고 생성자와 소멸자에 가상함수를 쓰면 안된다고 나와있고 거기에 대한 자세한

설명이 없더군요. 이런저런 고민을 해 보았는데 왜 쓰면 안되는지 모르겠습니다.

코드는 대충..

class A
{
public:
A(){
test();
}
~A(){
test();
}
virtual test()
{
printf("test\n");
}
};

void main()
{
A a;
}

출력
test
test

간단하게 이정도네요.
왜 호출이 되고 왜 쓰면 안되는지 설명 부탁드립니다.


----------------------------------------------------------------


이펙티브 C++ 참고하세요.
항목 9: 객체 생성 및 소멸 과정 중에는 절대로 가상 함수를 호출하지 말자

대충 요약하면 자식이 생기기도 전에 자식 함수 호출하면 안되는 거고
자식이 사라진 다음에 자식 함수 호출 하면 안되서 그렇습니다.




https://kldp.org/node/98424

반응형

+ Recent posts