前記事 でPImplイディオムのサンプル実装を紹介しましたが、今回は別の実装を紹介します。 前記事のサンプルではコピーコンストラクタとコピー代入演算子でWidget::Implクラスの完全なコピーを生成していました。しかし、コピーにはそれなりのコストがかかります。大きなデータを扱う場合はなおさらです。実際にはデータの読み取りにしか行わない場合などでは、完全なコピーは不必要です。そこで今回は読み取りにしか使わない場合はデータを共有し、データを書き換えるときにはじめて複製を作るような実装を考えます。shared_ptr を使うと実装が簡単になるので、これを使った例を示します。 widget.hpp: class Widget { public: typedef int data_type; explicit Widget(data_type = 0); ~Widget(); void setD
Problem ファイル間の依存関係が増加すると、コンパイルに要する時間も増加していきます。ファイル間の依存関係を減少させるためには、どのようにすれば良いでしょうか? Solution 例えば、以下のようなコードがあったとします。 Object.h #ifndef INCLUDE_GUARD_OBJECT_H #define INCLUDE_GUARD_OBJECT_H #include <string> class Object { public: explicit Object(const char* name); ~Object(); void print(); private: std::string name_; }; #endif // INCLUDE_GUARD_OBJECT_H Object.cpp #include <iostr
スマートポインタプログラミングテクニック 不完全クラスを利用して実装を隠蔽する "Pimpl" イディオム 抽象クラスを利用して実装を隠蔽する delete px.get() を予防する shared_ptr を利用して配列へのポインタを保持する オブジェクトの確保の詳細をカプセル化し、ファクトリ関数をラップする 静的なオブジェクトを指すポインタを shared_ptr で保持する shared_ptr を利用して COM オブジェクトへのポインタを保持する shared_ptr を利用して組み込み参照カウントを持つオブジェクトを保持する shared_ptr を利用して他の所有権共有スマートポインタを保持する 生ポインタから shared_ptr を獲得する コンストラクタの中で this から shared_ptr (weak_ptr) を獲得する this から shared_ptr
Recent entries 宣伝:C/C++のための開発補助ツール、GCCSenseをリリースしました matsuyama 2010-04-15 宣伝:Rubyのための開発補助ツール、RSenseをリリースしました matsuyama 2010-03-21 Emacsは死んだ matsuyama 2010-02-22 WebアプリケーションをiPhoneに対応させるための技術メモ matsuyama 2009-10-13 tokyo-emacs#x02の個人的レポート matsuyama 2009-09-07 Recent comments replica louis vuitton Anonymous User 2010-12-22 Re:テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました Anonymous User 2010-12
iPhoneの一般修理店は予約なしでも来店できる? 基本的には飛び込みで修理に行ってもOK iPhoneを置いていたソファにうっかりと腰かけてしまい、パネルを割ってしまった、こんな時はスマホの一般修理店へ行きましょう。画面割れは、スマホやタブレットの故障原因として非常に多いものです。予約なしで突然お店に行っても平気かしらと、不安に思う方々もいらっしゃるかもしれません。結論としては特に問題はなく、予約なしで訪問しても画面割れの修理はお願いできます。 ただし他のサービス業のお店同様、予約なしの場合、お店が混雑していると順番待ちをしなければいけないです。特に繁盛しているスマホ修理のお店だと、行列が店内で出来ており、予約なしだと、自分の順番が巡ってくるまで長時間待たされる可能性があります。平日の朝、昼なら利用客が少ない場合が多く、飛び込みでも比較スムーズに修理が頼めます。 予約は入れた方が時短に、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く