Partager via


Avertissement du compilateur (niveau 4) C4487

'derived_class_function' : correspond à la méthode non virtuelle héritée 'base_class_function', mais n’est pas explicitement marquée 'new'

Une fonction d’une classe dérivée a la même signature qu’une fonction de classe de base non virtuelle. C4487 vous rappelle que la fonction de classe dérivée ne remplace pas la fonction de classe de base. Marquez explicitement la fonction de classe dérivée pour new résoudre cet avertissement.

Pour plus d’informations, consultez nouveau (nouvel emplacement dans vtable).

Exemple

L’exemple suivant génère l’erreur 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();
}