| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「C++ CLI コードテンプレート 継承」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
6行目: 6行目:
 
   {
 
   {
 
   public:
 
   public:
     virtual void func1() {
+
     [[vi]]rtual void func1() {
 
         Console::WriteLine(L"Base::func1");
 
         Console::WriteLine(L"Base::func1");
 
     }
 
     }
     virtual void func2() {
+
     [[vi]]rtual void func2() {
 
         Console::WriteLine(L"Base::func2");
 
         Console::WriteLine(L"Base::func2");
 
     }
 
     }
     virtual void func3() {
+
     [[vi]]rtual void func3() {
 
         Console::WriteLine(L"Base::func3");
 
         Console::WriteLine(L"Base::func3");
 
     }
 
     }
21行目: 21行目:
 
   public:
 
   public:
 
     // 明示的オーバーライド
 
     // 明示的オーバーライド
     virtual void func1() override {
+
     [[vi]]rtual void func1() override {
 
         Console::WriteLine(L"Deriv::func1()");
 
         Console::WriteLine(L"Deriv::func1()");
 
     }
 
     }
 
     // オーバーライドしない(隠蔽)
 
     // オーバーライドしない(隠蔽)
     virtual void func2() new {
+
     [[vi]]rtual void func2() new {
 
         Console::WriteLine(L"Deriv::func2()");
 
         Console::WriteLine(L"Deriv::func2()");
 
     }
 
     }
 
     // 名前付けオーバーライド
 
     // 名前付けオーバーライド
     virtual void newFunc3() = Base::func3 {
+
     [[vi]]rtual void newFunc3() = Base::func3 {
 
         Console::WriteLine(L"Deriv::func3()");
 
         Console::WriteLine(L"Deriv::func3()");
 
     }
 
     }

2020年2月16日 (日) 04:22時点における最新版

C++ CLI コードテンプレート 継承

 using namespace System;

ref class Base 
  {
  public:
    virtual void func1() {
        Console::WriteLine(L"Base::func1");
    }
    virtual void func2() {
        Console::WriteLine(L"Base::func2");
    }
    virtual void func3() {
        Console::WriteLine(L"Base::func3");
    }
  };

ref class Deriv : public Base 
  {
  public:
    // 明示的オーバーライド
    virtual void func1() override {
        Console::WriteLine(L"Deriv::func1()");
    }
    // オーバーライドしない(隠蔽)
    virtual void func2() new {
        Console::WriteLine(L"Deriv::func2()");
    }
    // 名前付けオーバーライド
    virtual void newFunc3() = Base::func3 {
        Console::WriteLine(L"Deriv::func3()");
    }
  };

int main(array<System::String ^> ^args)
{
    Deriv^ base = gcnew Deriv();
    base->func1();
    base->func2();
    base->func3();

    Base^ base2 = gcnew Deriv();
    base2->func1();
    base2->func2();
    base2->func3();
    
    return 0;
}