Ini adalah contoh sederhana untuk mengilustrasikan pertanyaan:
class A {};
class B
{
B(A& a) : a(a) {}
A& a;
};
class C
{
C() : b(a) {}
A a;
B b;
};
Jadi B bertanggung jawab untuk memperbarui bagian dari C. Saya menjalankan kode melalui lint dan bertanya tentang anggota referensi: lint # 1725 . Ini berbicara tentang mengurus salinan default dan tugas yang cukup adil, tetapi salinan default dan tugas juga buruk dengan petunjuk, jadi ada sedikit keuntungan di sana.
Saya selalu mencoba menggunakan referensi di mana saya bisa karena pointer telanjang memperkenalkan secara tidak pasti tentang siapa yang bertanggung jawab untuk menghapus pointer itu. Saya lebih suka menyematkan objek berdasarkan nilai tetapi jika saya membutuhkan pointer, saya menggunakan auto_ptr di data anggota kelas yang memiliki pointer, dan meneruskan objek tersebut sebagai referensi.
Saya biasanya hanya akan menggunakan pointer dalam data anggota ketika pointer bisa menjadi null atau bisa berubah. Apakah ada alasan lain untuk lebih memilih petunjuk daripada referensi untuk anggota data?
Benarkah untuk mengatakan bahwa objek yang berisi referensi tidak boleh dialihkan, karena referensi tidak boleh diubah setelah diinisialisasi?