Если у меня есть иерархия классов C++, где базовый класс имеет функцию-член, объявленную как виртуальную, но производные классы не объявляют эту функцию виртуальной, как далеко в иерархии классов виртуализация несут. Например, данный код является корректным значением возвращаемого значения MyFunc2?Правила получения не виртуального потомка с виртуальным базовым классом
class A
{
public:
virtual int x() { return 1; }
}
class B : public A
{
public:
int x() { return 2; }
};
class C: public B
{
public:
int x() { return 3; }
};
int MyFunc1(f &A)
{
return f.x();
}
int MyFunc2(f &B)
{
return f.x();
}
int MyFunc3()
{
C c;
return MyFunc1(c);
}
int MyFunc4()
{
C c;
return MyFunc2(c);
}
От similar question here, казалось бы, что виртуальная характеристика распространяется вперед для всех классов, как только это виртуальная в базовом классе, но мне интересно, насколько хорошо определены это, в частности, является Bx() виртуальный по подразумевается вывод из A.
Что означает «технический»? В каком другом смысле есть конечная функция * не * виртуальная? –
Слово «технически» означает «имеет характеристики, связанные с ним ...» – Peter
Да, но это просто действительно запутанный способ сказать «есть» :-) –