Compilerwarnung (Stufe 4) C4487

'Abgeleitete_Klassenfunktion': Stimmt mit geerbter nicht virtueller Methode 'Basisklassenfunktion' überein, ist jedoch nicht explizit mit 'new' markiert

Eine Funktion in einer abgeleiteten Klasse verfügt über die gleiche Signatur wie eine nicht virtuelle Basisklassenfunktion. C4487 dient als Warnung, dass die Basisklassenfunktion von der abgeleiteten Klassenfunktion nicht überschrieben wird. Markieren Sie die abgeleitete Klassenfunktion explizit als new, um diese Warnung aufzulösen.

Weitere Informationen finden Sie unter new (new slot in vtable).

Beispiel

Im folgenden Beispiel wird C4487 generiert.

// 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();
}