class A
{
public:
virtual void
doSomething(void)
{}
void
doStuff(void)
{
doSomething();
}
};
class B : public A
{
public:
void
doSomething(void)
{
// do some stuff here
}
};
B * b = new B;
b->doStuff();
它給我分段錯誤。我究竟做錯了什麼?它應該在我看來很好!從基類方法調用子類虛擬方法
B沒有doStuff成員 - 所以A :: doStuff將被調用。 – 2010-01-15 12:42:36
他正在調用非多態'doStuff',其實現調用多態'doSomething'。 – ChrisW 2010-01-15 12:43:31
我打電話給在'B'類中聲明並從'A'類調用的'doStuff()'。 – kjagiello 2010-01-15 12:45:23