タグ

ブックマーク / www.kmonos.net (3)

  • letsboost::shared_ptr

    sample サンプルの動作確認バージョン [GCC4.4/1.41.0] [VC9/1.41.0] #include <string> #include <vector> #include <iostream> #include <boost/shared_ptr.hpp> using namespace std; int main() { typedef boost::shared_ptr<string> StrPtr; StrPtr s = StrPtr(new string("pen")); vector< StrPtr > v; // vectorに入れたり。 v.push_back( StrPtr(new string("this")) ); v.push_back( StrPtr(new string("is")) ); v.push_back( StrPtr(new str

    peroon
    peroon 2011/04/26
    スマートポインタ
  • letsboost::noncopyable

    sample サンプルの動作確認バージョン [GCC4.4/1.41.0] [VC9/1.41.0] #include <boost/utility.hpp> class SomeThing : boost::noncopyable { ... }; int main() { SomeThing a, b; a = b; // ここでコンパイルエラーになる SomeThing c( a ); // これもエラー return 0; } etc コピーしちゃダメなクラス、というのを作りたいことが時々あります。 「じゃあコピーしないように気をつけてプログラムを組む」というのは最後の手段で、 出来る限り「もしコピーするプログラムを書いてしまったらコンパイルエラーになる」 ように作っておくのが安全ですネ。 そこで使われる常套手段が、「コピーコンストラクタと operator= の宣言を priva

    peroon
    peroon 2011/02/06
  • 例外安全 - プログラミング言語 D (日本語訳)

    例外安全なプログラミングとは、 例外を投げる可能性があるコードが実際に例外を投げた場合に、 プログラムの状態が壊れずリソースもリークしないように作るプログラミングのことを言います。 これを正しく実現するには、既存の方法では、複雑で読みにくく脆いコード を書かねばなりませんでした。結果として、例外安全性に関して バグが残っていることが非常に多かったり、そもそも手間を省くために 例外安全が完全に無視されたりしてきました。 例として、数行の文を実行するあいだMutexをロックして、 終わったら解放するというケースを考えてみましょう: void abc() { Mutex m = new Mutex; lock(m); // mutexをロック foo(); // 処理を行う unlock(m); // mutexをアンロック } >foo() が例外を投げると、abc() は例外による巻き戻しで

    peroon
    peroon 2011/01/17
    Dだったwww
  • 1