C++参照、ポインタの選択

1137 ワード

最近、C++でポインタを選択するか参照するかで悩んでいます.長い間悩んでいたが、今は基本的に確定できるようになった.
まず、ポインタと参照の直接的な違いを説明します.
この違いはよくありますが、C++に詳しい人はみんな言っているはずです.
1.        ,        ;
2.           (*),       ;
3.               ,     ;    ;  “    ;
4.      const,    const,const       ;
5.       ,      ;
6. “sizeof   ”          (  )   , “sizeof   ”        (            )   ;
   typeid(T) == typeid(T&)    ,sizeof(T) == sizeof(T&)    ,          ,          (        )。
7.         (++)       。

実際の使用では、参照が空になることはあり得ないので、参照を使用する前にポインタのように空の値をチェックする必要はありません.これにより、多くのコード量を減らすことができ(効率に影響を及ぼさないと言われています)、空のポインタによるプログラムのクラッシュもありません.したがって、オブジェクト向けのC++では、参照を使用できる場所はポインタを使用しないという原則を持っているはずです.
引用の弊害を見てみましょう.
C++参照は便利ですが、それ自体にも弊害があります.
クラスに参照メンバーが含まれている場合、このクラスは言語で生成されたデフォルトのコンストラクタ、コピーコンストラクタ、および付与関数を使用できません.これは、参照を空にすることはできません.コンストラクション関数で参照メンバーに値を割り当てる必要があります.言語のデフォルトで生成される関数はこの機能を備えていません.デフォルトコンストラクション関数はC++において非常に重要な概念であり、特にSTLを使用する場合、デフォルトコンストラクション関数のために参照メンバー変数を破棄する必要があります.
最後に引用の使用場所をまとめます.
1.関数の直接的なパラメータ伝達、参照を優先します.
2.関数は値を返し、参照を優先します.
3.クラスのデータメンバーは、できるだけ参照しないでください.