ユーザ用ツール

サイト用ツール


cli:value_class

差分

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

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

cli:value_class [2009/01/31 12:41]
admin 作成
cli:value_class [2013/12/23 09:08]
ライン 1: ライン 1:
-====== value class ====== 
  
- 
-C++のクラスは、= や実体による引数の受け渡しによってコピーできます。ref classで定義されたクラスはoperator= や コピーコンストラクタをもたない場合勝手にコピーされることはありません。 
-<code cpp> ​ 
-ref class C { 
-    int i; 
-}; 
-void func(C c) {} 
-int main() 
-{ 
-    C c; 
-    C d; 
-    func(c); ​  // エラー 
-    d = c;     // エラー 
-} 
-</​code>​ 
-キーワード value classで定義されたクラスは、コピーすることができ、そのコピーはビットワイズ、すなわちmemcpyのようなコピーです。 ​ 
- 
-よって、value classにはこのようなコピーが可能な型しか含むことができません。すなわちref classで定義されたクラスのインスタンスを含むことはできません。 ​ 
- 
-またvalue classはスタック上に作成することができます。ref classの場合はスタック上に作成したように見えても、実際はマネージヒープ上に作成されましたが、value classは本当にスタック上に作られます。 ​ 
- 
-このような理由からも、value classにはref classのインスタンスを含むことができません。 ​ 
- 
-また、value classは以下のものを持つことはできません。 
- 
-  * デフォルトコンストラクタ 
-  * コピーコンストラクタ 
-  * operator= 
-  * デストラクタ 
-  * ファイナライザー 
-その他、継承もできません。(interfaceを除く) 



/var/www/html/virtual/cppcli/data/pages/cli/value_class.txt · 最終更新: 2013/12/23 09:08 (外部編集)