最初にN00bアラート。その中の根底にある論理を理解していないとき、私は何かをするのが嫌いです。そのため、ごく最近、C ++を使い始めましたが、それでもポインターと参照の概念を理解しようとしています。また、関数の戻り値の型としての使用法。
したがって、ここでは、ポインタと参照をいつ、どこで、なぜ使用する必要があるかについての適切な説明が説明されています。関数の戻り値の型と同じ説明がそれらに当てはまりますか?
違いは、一般的に参照とポインタの違いと同じです。これらは、異なる用途を対象とした2つの異なるものです。ポインタは文字通りメモリ内の何かのアドレスであり(したがって、それが指すものは変更できます)、参照は内部で同じ方法で実装される可能性があります(そして多くの場合そうです)が、経済性を失うことなくメモリアドレスを隠すことを目的としていますそれらをコピーする代わりに既存のオブジェクトを指すこと。
ポインタには、メモリへの概念的な近接性に関連する機能があり(ポインタ演算により、格納されているデータを文字通り1つに渡ります)、他の場所に適用される多くのルールを無視するために使用できます。参照はどこにも順応性がありませんが、より安全で、相対的な安定性が保証されます。
私はこれらのことを正直に言うための経験則のファンではありません、特にそれらが間違った場所や手にどれほど致命的である可能性があるかを与えられたポインターでは、しかしあなたが絶対にしなければならない場合:それが合理的である限り参照を使用する初心者として選択肢があれば、おそらくより安全な賭けです。ポインタは、メモリ内の複数のアイテムへの単一の動的アクセサが必要な場合、または一部のポリモーフィズムの場合にのみ、初心者レベルでいくらか必須になります。
いくつかのAPIにバインドされているため、何がどの形式で渡されるかという点で設定されている場合は、渡されたものに固執する可能性があります(ポインターはポインターのままで、そのまま返されます。参照)。
一般に、同じ文でnoob、function、returnポインタを聞くと、その人の安全が心配になります:)前に述べたように、C ++でのスコープを覚えていると、関数内で作成されたものは、戻ると破棄されます。参照またはプレーンコピーを使用したこれらの場合のコンパイラ警告または明らかなエラー。ポインタトリックの実行を開始すると、それがひどく間違ってしまい、エラーが発生した場所から遠く離れてしまう可能性があります。参照を使用して物事を混乱させることはまだ可能ですが、非常に長いショットのIMOではそれほど簡単ではありません。
それでも、経験則を収集するのではなく、手の届く範囲にあるコードを調べて、さまざまな使用法やいくつかの実装について理解を深めることをお勧めします。私の投稿には単純化と省略が多すぎて面白くありませんが、より良いものを明確にすることはできないようです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加