은 정의되지 않은 행동이, 되지 않은 호출 다음과 같은 코드를 않습니다 안 그래?자격이없는 T 생성자에서 순수 가상의 클래스 T 구현을 호출합니까? 클래스 <code>T</code>의 생성자에서 (직접 또는 간접적으로)을 <code>T</code> 멤버 함수의 가상 전화가 대부분에서 <code>T</code>의 구현에 가서 할 수있는 고려
참고 : 노이즈를 방지하려면 : 생성자에서 호출 할 때 멤버 함수가 사실상 호출되지 않는다고 생각되면 여기에 답하거나 주석을 달지 말고 별도의 SO 문제에서이 문제를 제기하십시오. 고맙습니다.
struct Baze
{
virtual void foo();
virtual void bar() = 0;
Baze(){ foo(); bar(); }
};
void Baze::foo() {}
void Baze::bar() {}
struct Derived: Baze
{
void bar() override {}
};
int main()
{
Derived{};
}
익명 downvoter는, 당신의 downvote를 설명하십시오. –
당신은 잠재적 인 종류의 하강자에게 모순되는 지시를 내 렸습니다. 여기에 언급하지 않고 투표를 설명해야합니다. –
@ M.M. 아니오, 그들은 단순히 무지에서 다운 다운하지 말고, 그 문제를 SO 문제로 제기하십시오. 내가 눈치 챘을 때 중복으로 투표를 마감 할 것입니다. :) –