Partilhar via


Aviso do compilador (nível 4) C4487

'derived_class_function': corresponde ao método não virtual herdado 'base_class_function', mas não está explicitamente marcado como 'new'

Uma função em uma classe derivada tem a mesma assinatura que uma função de classe base não virtual. O aviso C4487 lembra que a função de classe derivada não substitui a função de classe base. Marque explicitamente a função de classe derivada como new para resolver esse aviso.

Para obter mais informações, confira new (novo slot na vtable).

Exemplo

O exemplo a seguir gera o aviso C4487.

// C4487.cpp
// compile with: /W4 /clr
using namespace System;
public ref struct B {
   void f() { Console::WriteLine("in B::f"); }
   void g() { Console::WriteLine("in B::g"); }
};

public ref struct D : B {
   void f() { Console::WriteLine("in D::f"); }   // C4487
   void g() new { Console::WriteLine("in D::g"); }   // OK
};

int main() {
   B ^ a = gcnew D;
   // will call base class functions
   a->f();
   a->g();
}