컴파일러 경고(수준 4) C4487
'derived_class_function': 상속된 가상이 아닌 메서드 'base_class_function'과 일치하지만 명시적으로 'new'로 표시되지 않습니다.
파생 클래스의 함수에는 가상이 아닌 기본 클래스 함수와 동일한 서명이 있습니다. C4487은 파생 클래스 함수가 기본 클래스 함수를 재정의하지 않음을 알려 줍니다. 파생 클래스 함수 new
를 명시적으로 표시하여 이 경고를 해결합니다.
자세한 내용은 새 슬롯(vtable의 새 슬롯)을 참조하세요.
예시
다음 샘플에서는 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();
}