В Cplusplus в производном классе, если мы определяем функцию-член, чтобы переопределить функцию-член в своем родительском классе, нужно ли объявить виртуальный объект в производном классе?Нужно ли переопределять функции виртуальным?
Например, нам нужно объявить g
виртуальным в B
, чтобы его переопределить A::g
? что одно из следующего верно для вышеуказанной цели?
class A{
public:
void f(){printf("A");}
virtual void g(){printf("A");}
}
class B : public A{
public:
void f(){printf("B");}
void g(){printf("B");}
}
или
class A{
public:
void f(){printf("A");}
virtual void g(){printf("A");}
}
class B : public A{
public:
void f(){printf("B");}
virtual void g(){printf("B");}
}
Спасибо.
спасибо. почему «вы можете и должны указывать его как переопределение в C++ 11 и далее». – Tim
@ Тим, я сложил свой комментарий в самом ответе. Спасибо за просьбу :) – StoryTeller