ファイナライザと自動変数とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > ファイナライザと自動変数の意味・解説 

ファイナライザと自動変数

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/03/16 02:54 UTC 版)

C++/CLI」の記事における「ファイナライザと自動変数」の解説

そのほか変化として、C++/CLIではガベージコレクション時に実行されるファイナライザ構文が!クラス名()となったことが挙げられる。そして~クラス名()従来C++と同じ意味のデストラクタとなった。さらに、下の例にあるよう新し構文では、従来C++同じくデストラクタ自動的に呼ばれる共通中間言語 (CIL) 上では、C++/CLIデストラクタIDisposableインターフェイスDisposeメソッドとして実装される。C++/CLIコンパイラそのようにコンパイルする。このためC++/CLIでも引き続きRAIIが可能である。 // C++/CLI// デストラクタ定義すると、IDisposable明示的に指定しなくても、コンパイラ自動的にIDisposable実装すると判断するref class MyClass // : IDisposable{public: MyClass() {} // コンストラクタ。 ~MyClass() {} // デストラクタコンパイラによってIDisposable::Dispose()変換されるstatic void Test() { { MyClass x; // ハンドルでなく初期化子も無い:コンパイラコンストラクタを呼ぶ。 x.ToString(); // コンパイラブロック全体を包むfinally作りその中で自動変数xのデストラクタを呼ぶコード自動生成する。 } MyClass^ user; try { user = gcnew MyClass(); user->ToString(); } finally { delete user; } }protected: !MyClass() {} // ファイナライザObject::Finalize()直接オーバーライドすることはできないマネージ拡張C++ではvirtual void Finalize()という構文だった。}; // C#class MyClass : IDisposable{ public MyClass() {} // コンストラクタ。 ~MyClass() {} // ファイナライザ旧称デストラクタ)。Object.Finalize()直接オーバーライドすることはできないpublic void Dispose() {} // IDisposable.Dispose() メソッド実装public static void Test() { using (MyClass x = new MyClass()) { x.ToString(); } // コンパイラusingブロック抜けるときにx.Dispose()を必ず呼ぶコード自動生成する。 // つまり以下のコード等しい。 MyClass user; try { user = new MyClass(); user.ToString(); } finally { if (user != null) user.Dispose(); } }}

※この「ファイナライザと自動変数」の解説は、「C++/CLI」の解説の一部です。
「ファイナライザと自動変数」を含む「C++/CLI」の記事については、「C++/CLI」の概要を参照ください。

ウィキペディア小見出し辞書の「ファイナライザと自動変数」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ファイナライザと自動変数」の関連用語

1
12% |||||

ファイナライザと自動変数のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ファイナライザと自動変数のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのC++/CLI (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS