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


/clr のコンパイルでは、new は、仮想メンバーが 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