0
class Base
{
public:
Base(){Foo();}
~Base(){Foo();}
virtual void Foo(){std::cout<<"base";}
};
class Derived: public Base
{
public:
Derived(){Foo();}
~Derived(){Foo();}
void Foo(){std::cout<<"derived";}
};
//main
{
Derived d;
}
이 코드가 "기본"및 "파생 된"코드를 인쇄하는 이유는 무엇입니까?
나는 가상 함수 호출을 생성자 또는 desctructor 내부에 두지 않는 것이 좋다고 생각한다. 위의 코드가 동작하는 이유를 알고 싶다. 감사생성자 및 소멸자에서 가상 함수 호출
사실, "basederivedderivedbase"('// main'을 수정 한 후)를 출력하고, 잠시 생각하면 이유를 알 수 있습니다. – WhozCraig