假設我有以下代碼:爲什麼我必須重新聲明C++派生類中的重寫函數?
class Iinterface
{
virtual void abstractFunction()=0;
};
class Derived : public Iinterface
{
void abstractFunction(); // Do I need this line?
};
Derived::abstractFunction()
{
// implementation here
}
如果我不加這行,我得到編譯錯誤,說:abstractFunction
不Derived
聲明。我使用的VS 2008.
我不知道爲什麼我需要這個特定的行(不要混淆這與函數定義,這是提供外類聲明),只要我從Iinterface
它應該繼承很明顯我已經申報了abstractFunction
。這是視覺工作室的問題,還是由C++標準強制執行?
你總結得更好:) –
我同意,這可能是比我散漫的回答,+1更容易理解。 – OmnipotentEntity
派生類是否抽象可以用C++缺乏的明確的「抽象」關鍵字來知道。 –