- C++相談室 part122 [無断転載禁止]©2ch.net
142 :デフォルトの名無しさん[sage]:2016/01/27(水) 20:44:21.08 ID:gqKHFo+S - >>129
だからtry-catchなんかしない。>>94,108のとおりRAIIで解決する。 なんというか10年前にタイムスリップした感がある。↓読んでくれ。 https://www.google.co.jp/search?q=C%2B%2B+%E3%82%B3%E3%83%B3%E3%82%B9%E3%83%88%E3%83%A9%E3%82%AF%E3%82%BF+%E4%BE%8B%E5%A4%96
|
- C++相談室 part122 [無断転載禁止]©2ch.net
163 :デフォルトの名無しさん[sage]:2016/01/27(水) 21:46:53.21 ID:gqKHFo+S - >>150
> B() try : _id(GetId()), _a(_id) > { > cout << "B:B" << _id << endl; > } > catch(int ex) > { > cout << "B:B" << _id << " exception " << ex << endl; このcatch内でのメンバ変数 _id の参照は未定義動作になる。 15.3 [except.handle] p10 > Referring to any non-static member or base class of an object in the > handler for a function-try-block of a constructor or destructor for that > object results in undefined behavior.
|
- C++相談室 part122 [無断転載禁止]©2ch.net
178 :デフォルトの名無しさん[sage]:2016/01/27(水) 22:45:20.30 ID:gqKHFo+S - >>177
隙だらけすぎるだろ。 > 記述量の割に得られる対価が例外に対する備えだけ、 基本的なところは標準ライブラリでカバーされてるんだけど、記述量ってどんなコード想定してんの? それに、例外以外にreturnやbreakにも利くよ。 > RAIIなプログラムのメモリ消費量はなかなか安定に達しないから(∵確保したり開放したりで断片化が進ん 確保解放のパターンがRAIIで規定されるわけないし、使い方でどうにでもなるでしょ。 > 意図とはうらはらに、実は第三者に対してメモリリークが無いことの証拠提示がヒジョーに厄介なプログラムに RAII使わない、生でdeleteやらなんやら書いてるコードよりはマシでしょ。悪化する例があるなら見たい。
|
- C++相談室 part122 [無断転載禁止]©2ch.net
196 :デフォルトの名無しさん[sage]:2016/01/27(水) 23:52:26.77 ID:gqKHFo+S - >>180
10年ぐらい前にはこんな爺さんがよく居たもんだが、まだ居るのか・・・。 > いちいちstd::shared_ptr<T>とか打ちたくないし、pSomeSmartPtr.get()ですらちょっと嫌 慣れる。どうしても嫌なら好きに using でもしとけばいい。 get() なんて使わんでいい。 > メモリ直接ならまだ標準ライブラリでカバーされるが、OSがハンドルを返す場合はwrapperを書かねばならない 自分で書くケースがあるのはそうだが、稀だろ。 稀じゃないなら、個別に破棄処理を漏れなく書いて回るよりも一度書けば済むRAIIのほうがマシ。 > メンバ変数を全部wrapperかスマポにせねばならない > これは苦行以外の何者でもない std::shared_ptr<T>が打てない状況ならそうかもしれないな。 でもそれは個人的な事情であってRAIIの問題じゃない。 > そしてクラスの群れを書く面々のうちの誰か一人がしくじれば、やはりリークする RAII関係ない。 > returnやbreakについては、例外と違って伝統的な書き方で対処可能 伝統的で且つ面倒な書き方でな。RAIIのほうが楽。
|