タグ

2010年7月7日のブックマーク (1件)

  • 『オブジェクトの再初期化』

    以前、Copy&Swap技法 について記事を書きましたが、今回はSwap技法を使った別のちょっとした小技を紹介しましょう。 オブジェクトを初期状態に戻すときに次のようにswapを使うことができるのです(ただしクラスのメンバ関数にswap関数が定義されている場合です)。 Widget widget; widget.doSomething(); ←オブジェクトの状態を変化させるメソッドの実行 ... Widget().swap(widget); ← オブジェクトを初期状態に戻すイディオム ... Widget().swap(widget)が何を行っていると言うと、まずWidget()で名前のない一時オブジェクトをデフォルトコンストラクタで生成しています。そして生成された一時オブジェクトのswapメンバ関数を呼んで引数にwidgetを与えてます。そうすることで生成された一時オブジェクトとwidg

    『オブジェクトの再初期化』
    kamenoi
    kamenoi 2010/07/07
    vectorはempty_instance.swap(filled_instance)としないとメモリを開放しない。clear()ではcapacityは変わらない。