Bu, soruyu açıklamak için basitleştirilmiş bir örnektir:
class A {};
class B
{
B(A& a) : a(a) {}
A& a;
};
class C
{
C() : b(a) {}
A a;
B b;
};
B, C'nin bir kısmını güncellemekten sorumludur.Kodu tüy bırakmadan çalıştırdım ve referans üye hakkında konuştu: lif # 1725 . Bu, varsayılan kopya ve atamalara yeterince adil bakmaktan bahseder, ancak varsayılan kopya ve atama da işaretçilerle kötüdür, bu nedenle orada çok az avantaj vardır.
Her zaman referansları kullanmaya çalışıyorum çünkü çıplak işaretçiler bu işaretçiyi silmekle kimin sorumlu olduğu konusunda belirsiz bir şekilde ortaya çıkıyor. Nesneleri değere göre yerleştirmeyi tercih ederim, ancak bir işaretçiye ihtiyacım varsa, işaretçinin sahibi olan sınıfın üye verilerinde auto_ptr kullanın ve nesneyi başvuru olarak iletin.
Genellikle işaretçi boş veya değişebilir üye verileri yalnızca bir işaretçi kullanmak istiyorsunuz. Veri üyeleri için referanslar yerine işaretçileri tercih etmenin başka nedenleri var mı?
Bir referans başlatıldıktan sonra bir referans değiştirilmemesi gerektiğinden referans içeren bir nesnenin atanması gerektiğini söylemek doğru mudur?