は、通常のポインタのようにそれについて考える:
int * const i;
は、非const
int
へconst
ポインタです。 int
は変更できますが、ポインタは変更できません。
int const * i;
はconst
int
に非const
ポインタです。ポインタは変更できますが、int
は変更できません。
さて、unique_ptr
のために、それはconst
が内部または<>
外に出たかどうかの質問です。したがって:
std::unique_ptr<int> const u;
は最初のものと同じです。 int
は変更できますが、ポインタは変更できません。 int
std::unique_ptr<int const> u;
あなたはポインタを変更することができますが、ない:
何が欲しいのです。それともさえ:ここ
std::unique_ptr<int const> const u;
あなたはポインタまたはint
を変更することはできません。
私はいつも右にconst
を配置していますか?これは少し珍しいことですが、ポインタを扱うときには必要です。 const
は、常にそのすぐ左側のものに適用され、(ポインタはconst
)またはint
です。 http://kuhllib.com/2012/01/17/continental-const-placement/を参照してください。 int const *
を考えることにあなたを導く可能性があるconst int
を書く
は、間違っている非const
int
へconst
-pointer、です。
。 – erip
C++では 'const'が浅いです。 'int * const'は、オブジェクトへのポインタを変更することもできます。 –
ポインタがスマートでない場合、同じコードを使用できます。 constはポインターに適用され、pointeeには適用されません。 – juanchopanza