「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > C++ で参照またはポインターによって渡す場合: 指導原則?

C++ で参照またはポインターによって渡す場合: 指導原則?

2024 年 11 月 15 日に公開
ブラウズ:680

When to Pass by Reference or Pointer in C  : A Guiding Principle?

C での参照またはポインターによる受け渡し : 指導原則

C で、参照による受け渡しを使用する場合とポインターを使用する場合を理解する重要です。これを実践すると、効率的でエラーのないコードが得られます。

一般的な状況

  • std::string を関数に渡す:

    • foo(std::string*) または foo(std::string&)?
  • tr1::shared_ptr を関数に渡す:

    • foo(tr1::shared_ptr* ptr) または foo(tr1::shared_ptr& ptr)?

ポインタと参照

参照渡しでは、すべてのオブジェクトを参照として扱うことができるため、一貫性が保たれます。ただし、ポインターで渡すことにより、nullptrs とリテラルを柔軟に処理できるようになります。

スニペット分析

指定されたスニペット:

map> > adjacencyMap;
vector* myFriends = new vector();
myFriends->push_back(string("a"));
myFriends->push_back(string("v"));
myFriends->push_back(string("g"));
adjacencyMap["s"] = shared_ptr >(myFriends);

は、参照とポインターの両方のプロパティを考慮する必要があることを強調しています:

  • マップ キーは使用します。
  • ベクトル ポインタにより動的割り当てが可能になり、ベクトルの追加が容易になります。

経験則

最終的には、適切な選択は特定の要件によって異なります。指針として、以下を考慮してください:

  • 参照を使用する: メモリを効率的に使用するため、および参照先オブジェクトへのアクセスが保証されている場合に使用します。
  • 使用pointers: nullptrs を処理するとき、動的メモリを操作するとき、または参照自体を変更する必要があるとき。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3