ポインタとリファレンスの違い

1811 ワード

ポインタは「*」と「-->」オペレータ、参照は「.」オペレータ、もちろんこれは表面の違いです.
  • 参照は、空の参照と呼ばれるオブジェクトを表す必要があります.ポインタはNULLにできます.つまり、参照には初期値が必要です.ポインタはそうではありません.したがってpointersを使用する前にnullであるかどうかをテストする必要があります.referencesはテストする必要はありません.
  • pointersは、別のオブジェクトを指し、referenceは常に最初に得られたオブジェクトを指す(代表する)ことができる.
    string s1("Nancy");
    
    string s2("Clancy");
    
    
    
    string &rs = s1;      //rs s1.
    
    string *ps = &s1;  //ps s1.
    
    rs = s2;                 //rs s1,
    
                                 // s1 “Clancy”
    
    
    
    
    
    ps = &s2;             //ps s1,
    
                                //s1 

     
  • referencesを使用する必要がある場合もあります.たとえば、いくつかのオペレータを実装する場合.最も一般的な例はoperator[]です.このオペレータは、特別に「assignment付与オブジェクトとして扱われることができる」ものを返さなければなりません.
  • 結論:何かを指す必要があることを知っていて、他のものを指すことを変えることはありません.あるいは、オペレータを実現して、文法の需要がpointersで達成できない場合は、referencesを選択する必要があります.その他の場合はpointersを採用してください.