例:参照(constポインタ)が利用可能なときにconstキーワードを使用して定数ポインタを宣言するのはなぜですか?
ポインタで変更できるオブジェクトを指す定数ポインタを作成できます。ポインタを再割り当てすることはできません。
MyObj const *ptrObj = MyObj2
は、なぜ私が上でこれを使用します。
MyObj &ptrObj = MyObj2
例:参照(constポインタ)が利用可能なときにconstキーワードを使用して定数ポインタを宣言するのはなぜですか?
ポインタで変更できるオブジェクトを指す定数ポインタを作成できます。ポインタを再割り当てすることはできません。
MyObj const *ptrObj = MyObj2
は、なぜ私が上でこれを使用します。
MyObj &ptrObj = MyObj2
あなたはconst
ポインタがない持っている何、それはconst
オブジェクトへのポインタだ - です、ポインタは変更できますがオブジェクトは変更できません。 const
ポインタは次のようになります。
MyObj *const ptrObj = &MyObj2;
は、あなたが参照の上にそれを好むかもしれない理由として、あなたが何かのためにNULL
特別な値を使用しての柔軟性をお勧めします - あなたが参照しているを得ることはありません。
あなたは間違っています。参照があり、実際に
T * const p = &x; // OK, cannot change p
T & r = x; // "same thing"
p->mutate(); // OK, *p is mutable
:何が本当にしたいことは可変オブジェクトへ定数ポインタである
T const * p;
p = 0; // OK, p isn't const
p->mutate(); // Error! *p is const
T const & r = *p; // "same thing"
:何あなたが持っていることは定数オブジェクトへ可変ポインタであります定数ポインタと道徳的に等価なもの、すなわちT &
とT * const
との間の定数バージョンT const &
対T const * const
アドバイスを受けることを強くお勧めする場合は、「ポインタを使用しない」と言います。
ポインタと参照の重要な違いは、参照できるオブジェクトの数です。参照は常に正確に1つのオブジェクトを参照します。ポインタはゼロ(ポインタがヌルの場合)、1つ(ポインタに1つのオブジェクトの位置が割り当てられた場合)、またはn個のオブジェクト(ポインタが配列内のある点に割り当てられた場合)を参照することがあります。
0からn個のオブジェクトを参照するポインターの機能は、ポインターが表すことができるものがより柔軟であることを意味します。ポインターの余分な柔軟性が必要でない場合は、一般に参照を使用する方が良いです。そうすれば、誰かがあなたのコードを読んでいても、ポインタがゼロ、1つまたはn個のオブジェクトを参照しているかどうかを調べる必要はありません。
コンパイルされていないため、表示されません。 'MyObj'が型であり、' MyObj2'が 'MyObj'のインスタンスであると仮定すると、あなたはまだ'& 'が必要です... – AJG85