Я новичок в C ++.Пробуя пример кода полиморфизма, я обнаружил, что определение виртуальной функции базового класса в производном классе возможно только в том случае, если оно определено в производном классе или вне его с объявлением в производном классе.
Следующий код дает ошибку:
class B
{
public:
virtual void f();
};
void B::f() {
std::cout<<"B::f";
}
class D : public B
{
public:
void f2() {int b;}
};
// error: no "void D::f()" member function declared in class "D"
void D::f() {
std::cout<<"D::F";
}
Это работает, если я объявляю f () внутри D. Мне было интересно, почему мне нужно снова явно объявить функцию, когда она уже объявлена вБазовый класс.Компилятор может получить подпись из базового класса, верно?
Заранее спасибо ..