ユーザ用ツール

サイト用ツール


staticコンストラクタ

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
staticコンストラクタ [2009/01/31 15:13]
192.168.0.63
— (現在)
ライン 1: ライン 1:
-====== staticコンストラクタ ====== 
  
- 
-ref classやvalue classやinterfaceはそのstaticなメンバーを初期化するためにstaticコンストラクターを定義することができます。ただし以下の制限があります。 
- 
-  * staticコンストラクタはprivateでなければなりません。 
- 
-  * staticコンストラクタはランタイムにより自動的に呼ばれます。プログラムから明示的に呼び出すことはできません。 
- 
-Note:​VC++2005のコンパイラはstaticコンストラクタをpublicにすることも、明示的に呼び出すこともできます。しかし、明示的に呼び出しても実際には呼び出されないようです。 
- 
-  * staticコンストラクタはパラメータ(引数)を持てません。 
- 
-Note:static initonlyなメンバーは、宣言と同時に初期化するか、staticコンストラクタで初期化しなければなりません。 
- 
-  * staticコンストラクタで例外が発生するとSystem::​TypeInitializationExceptionがスローされます。しかし通常catchすることはできません。 
- 
-  * staticデストラクタは存在しません。 
- 
-<code cpp> 
-using namespace System; 
-ref class A { 
-public: 
-    static int a_; 
-    static A() 
-    { 
-        a_ += 10; 
-    } 
-}; 
-ref class B { 
-public: 
-    static int b_; 
-    static B() 
-    { 
-//        a_ += 10; // error 
-        b_ += 10; 
-    } 
-}; 
-ref class C { 
-public: 
-    static int c_ = 100; 
-    static C() 
-    { 
-        c_ = 10; 
-    } 
-}; 
-ref class D { 
-public: 
-    static D() 
-    { 
-        Console::​WriteLine(L"​D is called"​);​ 
-    } 
-}; 
-int main() 
-{ 
-    Console::​WriteLine(A::​a_);​ 
-    A::A(); 
-    Console::​WriteLine(A::​a_);​ 
-    Console::​WriteLine(B::​b_);​ 
-    Console::​WriteLine(C::​c_);​ 
-    System::​Type^ t = D::typeid; 
-    Console::​WriteLine(t->​ToString());​ 
-    return 0; 
-} 
-</​code>​ 



/var/www/html/virtual/cppcli/data/attic/staticコンストラクタ.1233382429.txt.gz · 最終更新: 2013/12/23 09:07 (外部編集)