2016-08-20 9 views
2

なぜunique_ptrは、const ptrの借方を取ることができますか?unique_ptrの意味<const T>

unique_ptr<const T>の意味はなんですか?グラムでテスト++ 4.8 unique_ptrをはのconst PTRのowershipを取ることができますなぜ

+0

'const int *'と同じ意味ですが、 –

+0

@Casey stealth edit ...これはもともと 'int * const'でした。 – Quentin

答えて

3

std::unique_ptr<int> a(new int); 
    // Only this is compile error.         
    std::unique_ptr<int> b((const int*)new int); 
    std::unique_ptr<const int> c(new int); 
    // Why unique_ptr can take a const ptr, and delete it when deconstruct? 
    std::unique_ptr<const int> d((const int*)new int); 

定数変数であっても、それらが不要になったときに破棄して解放する必要があるためです。 constまたはvolatileのキーワードに関係なく、ファイナライズされていない変数でメモリとリソースのリークが発生します。

unique_ptrを<のconst Tの意味は何ですか>

それはconst TなくTだ除いuniqe_ptr<T>が、持っていることを何の意味。

//なぜunique_ptrはconst ptrを取ることができ、 deconstructのときにそれを削除するのですか?

私は、あなたは彼らがconstので、未修正および非破壊可能なのでconstオブジェクトは、削除できないことだと思う気持ちを持っています。これは間違っています。変数が構築された後にconstがキックインし、変数破壊に影響を及ぼす「停止」が発生します。そうでなければ、const変数を作成してそれらを破壊することはできませんでした。

関連する問題