java - C++返回对象的指针或者引用有什么区别?
阿神
阿神 2017-04-18 10:10:12
0
3
531
阿神
阿神

闭关修行中......

全員に返信(3)
Peter_Zhu

C++ の参照は実際には単なる制限されたポインターですが、制限されたポインターには意味上の制限があり、ポインターが実行できる一部の操作 (再代入、コピー、++、--) を実行するために使用することはできません (私は考えていません)その他)、セキュリティを向上させるために null が許可されていないことを制限します。これは、ポインタに対するコンパイラの保護モードとして理解できます。

それでは、いつ参照を使用する必要があるのか​​、またいつポインタを使用する必要があるのか​​を考えてみましょう。いくつかのポイントがあると思います:

  1. 最初に引用

    ポインタの代わりに参照を使用できる場合は常に参照を使用します。

  2. ポインタは null にすることができますが、参照は null にすることができません。

    リーリー

    もちろん、この場合でも参照の使用を続けることができ、空のオブジェクトの場合は例外をスローすることでそれを表現できます。

    リーリー
  3. フェアユースのセマンティクスは、ポインタは所有 (所有) を意味し、参照は関連付け (使用) を意味します:

    car には wheel

    があります リーリー

    tripcar を使用します:

    リーリー

    もちろん、例外があります。関連する _car が旅行の有効期間中に変数である必要がある場合は、ポインターのみを使用できます (参照を再割り当てできないため)。

    リーリー

    それ以外の場合、参照を使用することにこだわり、_car のポインタを変更したい場合は、新しいトリップを再構築することしかできません。

  4. 参照はコンテナに保存できません。使用できるのはポインタのみです (これは主に、参照の再割り当てとコピー操作が制限されているためだと思われます):

    リーリー
  5. 最後に、いつでも参照をポインタに変換できます。

    リーリー

    ただし、ここでは car は main メソッドによって使用されるためにのみ渡されます (参照は使用関係を暗示しています)。ただし、ポインタ操作は適切ではありませんが、料金を支払う必要があります。使用するポインタを保存することに注意してください:

    リーリー

    maintain メソッドを終了すると、_last_car が指すオブジェクトが解放される可能性があります。

いいねを押す +0
伊谢尔伦

Const について話すと底なし沼です
例を挙げてください

リーリー
いいねを押す +0
巴扎黑

NULL を返すことはポインターには許可されますが、参照には許可されません。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!