new (vtable の新しいスロット) (C++/CLI および C++/CX)new (new slot in vtable) (C++/CLI and C++/CX)

キーワードは、 new 仮想メンバーが vtable の新しいスロットを取得することを示します。The new keyword indicates that a virtual member will get a new slot in the vtable.

すべてのランタイムAll Runtimes

(この言語機能にはランタイムに適用される特記事項がありません。)(There are no remarks for this language feature that apply to all runtimes.)

Windows ランタイムWindows Runtime

Windows ランタイムではサポートされません。Not supported in Windows Runtime.

共通言語ランタイムCommon Language Runtime


コンパイルでは /clrnew 仮想メンバーが vtable に新しいスロットを取得することを示します。この関数は基底クラスのメソッドをオーバーライドしません。In a /clr compilation, new indicates that a virtual member will get a new slot in the vtable; that the function does not override a base class method.

new 関数の IL に newslot 修飾子を追加します。new causes the newslot modifier to be added to the IL for the function. newslot の詳細については、次のトピックを参照してください。For more information about newslot, see:


コンパイラ オプション: /clrCompiler option: /clr


次の例は、の効果を示して new います。The following sample shows the effect of new.

// newslot.cpp
// compile with: /clr
ref class C {
   virtual void f() {
      System::Console::WriteLine("C::f() called");

   virtual void g() {
      System::Console::WriteLine("C::g() called");

ref class D : public C {
   virtual void f() new {
      System::Console::WriteLine("D::f() called");

   virtual void g() override {
      System::Console::WriteLine("D::g() called");

ref class E : public D {
   virtual void f() override {
      System::Console::WriteLine("E::f() called");

int main() {
   D^ d = gcnew D;
   C^ c = gcnew D;

   c->f();   // calls C::f
   d->f();   // calls D::f

   c->g();   // calls D::g
   d->g();   // calls D::g

   D ^ e = gcnew E;
   e->f();   // calls E::f
C::f() called

D::f() called

D::g() called

D::g() called

E::f() called

関連項目See also

.NET および UWP 用のコンポーネントの拡張機能Component Extensions for .NET and UWP
オーバーライド指定子Override Specifiers