[C++] shared_ptrのtips (moveを使って高速化する)

C++のサンプルコードを見ていて、気になった事がありました。
インスタンス変数にshared_ptrを使っていたのですが、初期化の時に以下のようにしていました。

1
2
3
4
5
6
7
8
9
10
11
12
class Foo {
public:
    Foo(std::shared_ptr<Hoge> hoge) : hoge_(std::move(hoge)){
    };
    ~Foo(){
        std::cout << "Destroy FOO" << std::endl;
    };
 
private:
    std::shared_ptr<Hoge> hoge_;
 
};

引数のshared_ptrをインスタンス変数に渡す時にstd::moveしていました。
なんでだろうと思ってググってみたら、stackoverflowに同じ質問がありました。
なるほど、shared_ptrは遅いようなので、高速化するテクニックのようです。

0 件のコメント :

コメントを投稿