Предупреждение компилятора C4484
"override_function": соответствует методу класса base ref "base_class_function", но не помечен как "virtual", "new" или "override"; Предполагается, что "new" (и не "virtual" )
При компиляции с помощью /clr компилятор не будет неявно переопределять функцию базового класса, что означает, что функция получит новый слот в vtable. Чтобы устранить проблему, явным образом укажите, является ли функция переопределением.
Дополнительные сведения см. в разделе:
C4484 всегда выдается как ошибка. Используйте предупреждение pragma для подавления C4484.
Пример
Следующий пример приводит к возникновению ошибки C4484.
// C4484.cpp
// compile with: /clr
ref struct A {
virtual void Test() {}
};
ref struct B : A {
void Test() {} // C4484
};
// OK
ref struct C {
virtual void Test() {}
virtual void Test2() {}
};
ref struct D : C {
virtual void Test() new {}
virtual void Test2() override {}
};