- 1 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 03:39:51 ]
- このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 C++Builder使いが優しくコメントを返しますが、 お礼はC++Builderの布教と初心者の救済をお願いします。 Borland Home Page www.borland.co.jp/ <過去スレ> くだすれC++Builder(超初心者用) pc8.2ch.net/test/read.cgi/tech/1117225464/l50 くだすれC++Builder(超初心者用)その2 pc10.2ch.net/test/read.cgi/tech/1144308804/l50 <兄弟スレ> くだすれDelphi(超初心者用)その39 pc10.2ch.net/test/read.cgi/tech/1169386914/l50
- 280 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 08:47:01 ]
- 無理でしょ
- 281 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 10:21:32 ]
- むしろresult作らない理由がないとおもう。
コスト云々なら例外処理やめてgotoで(A)に飛ばした方がはるかにコスト低いし。
- 282 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 10:28:46 ]
- どちらかというと、finallyはDelphi用であって、C++には元々無いもの。
Delphiにfinallyが必須なのはFreeのためであり、C++ではローカルオブジェクトの使用が推奨されている。 try finallyとtry except(←こっちはC++標準)のネストやその中でのthrow や return は言語規定されてないんじゃないかと思うのでやヴぁ目。 逆にローカル変数やローカルオブジェクトは推奨なので、 >result変数を作る以外の方法はないでしょうか? という考えがワケワカメ。
- 283 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 10:34:18 ]
- C++でもWindowsAPIのハンドル閉じたりするのにfinallyは有用よ。
最近のC++処理系は大抵__finally使えるし。
- 284 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 10:37:50 ]
- finallyが有用なのと各種処理系で実装されているのは認めますが(実際自分も使ってる)、
finallyと例外catch(上では間違えてexceptって書いちゃった)系や、returnを組み合わせちゃダメ。 何でかっていうと、tryを2つ組み合わせて、その中でreturnすると、一番外のfinallyを通過しない。 ソースコードを読む上ではfinallyは必ず通るって頭で読むから、バグの元になるだけだお。
- 285 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 11:50:46 ]
- むしろreturnできる処理でどう__finally使うのか
- 286 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 11:59:47 ]
- その通り。
・finallyするなら複数箇所でreturnするな ・複数箇所でreturnするならfinallyするな あと、プログラミングテクニック的には、 関数やメソッドから抜ける箇所は1箇所にするとコーディングバグを防げる。 つまり、複数箇所returnはやめるべき。 (これも適材適所で、使い方によっては便利なときもあるけどね)
- 287 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 12:23:07 ]
- >>285
Delphi で Exit の後に finally が実行されるのを利用するのと同じで ローカル変数のデストラクタは return の後に実行されるのだろ?
|

|