ポインタとリファレンスの違い
1811 ワード
ポインタは「*」と「-->」オペレータ、参照は「.」オペレータ、もちろんこれは表面の違いです.参照は、空の参照と呼ばれるオブジェクトを表す必要があります.ポインタはNULLにできます.つまり、参照には初期値が必要です.ポインタはそうではありません.したがってpointersを使用する前にnullであるかどうかをテストする必要があります.referencesはテストする必要はありません. pointersは、別のオブジェクトを指し、referenceは常に最初に得られたオブジェクトを指す(代表する)ことができる.
referencesを使用する必要がある場合もあります.たとえば、いくつかのオペレータを実装する場合.最も一般的な例はoperator[]です.このオペレータは、特別に「assignment付与オブジェクトとして扱われることができる」ものを返さなければなりません. 結論:何かを指す必要があることを知っていて、他のものを指すことを変えることはありません.あるいは、オペレータを実現して、文法の需要がpointersで達成できない場合は、referencesを選択する必要があります.その他の場合はpointersを採用してください.
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