Udostępnij za pośrednictwem


Ostrzeżenie kompilatora (poziom 4) C4487

"derived_class_function": pasuje do dziedziczonej metody innej niż wirtualna "base_class_function", ale nie jest jawnie oznaczona jako "nowa"

Funkcja w klasie pochodnej ma ten sam podpis co funkcja niewirtualnej klasy bazowej. C4487 przypomina, że funkcja klasy pochodnej nie zastępuje funkcji klasy bazowej. Jawnie oznacz funkcję klasy pochodnej, aby new rozwiązać to ostrzeżenie.

Aby uzyskać więcej informacji, zobacz nowe miejsce (nowe miejsce w tabeli wirtualnej).

Przykład

Poniższy przykład generuje 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();
}