2017-10-05 13 views
1

私は、多くの巨大な検索プロセス(開始、停止、など)を処理するクラスを持っています。私はdiffrenceについては考えているか、それがパフォーマンスに影響を与えるコンストラクタからクラス関数を呼び出すかスマートポインタを使用しますか?

std::unique_ptr<CSearch> search(new CSearch); 
search->Start(); 

CSearch search; 
search.Start(); 

またはこの:

class CSearch 
{ 
public: 
    CSearch(); 
    ~CSearch(); 

    bool Start(); 
    bool Stop(); 
}; 

は、私はこの方法から Start関数を呼び出すために少し混乱しています?

これはどちらが良い理由ですか? (質問は唯一のユニークなポインタではありません)

+1

が重複する可能性をそれ?](https://stackoverflow.com/questions/16894400/how-to-declare-stdunique-ptr-and-what-is-the-use-of-it) – wally

+3

完全なコンテキストを知らないと、私は言うだろうポインタを使う(スマートなのかそうでないのか)は、あなたが持っている問題の解決策ではないでしょう。 –

+3

あなたは[良いC + +の本](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)を使用することができるような音 – NathanOliver

答えて

2

マウンテンバイクやロードバイクの方が良いですか?

どちらも状況は良いですが、以上では、ラップされた新しいものではなくユニークなものを使用します。

一般的なルールとして、動的な有効期間割当が必要な理由がない限り、自動保存は良い考えです。

3

実際にポインタが必要な理由を説明できない場合は、ポインタを使用しないでください。ここで

はStroustrup氏からの迅速な読み取りです:5.2 Resource Management

0

C++コアガイドラインはスコープオブジェクト(ローカルオブジェクト、グローバルオブジェクト、またはメンバー)は、ヒープの割り当てに優先されるべきであることをお勧めします。

スコープ付き変数を使用すると、スコープまたはオブジェクトの格納にすでに使用されているコストを上回る別の割り当ておよび解放コストがないことを意味します。

以上ここから取られる:https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-scoped

あなたがここに資源管理に関する更なる指針を見つけることができます:[どのようにSTDを宣言するために::独特の\ _ptrと何の使用があるの https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-resource

関連する問題