A Sınıfı bir nesneyi (geniş anlamıyla, örneğin A & veya A * tarafından) başka bir Sınıf B'nin yapıcısına atıfta bulunmak istiyorum. B içinde değiştirilecek 'a' istemiyorum ('a' sadece okunabilir ve bu yüzden büyük bir boyuttadır, bu yüzden referans olarak iletmek istiyorum). Ben iki seçenekten biliyorum:C++ 'da başvuru seçenekleriyle geçme
1) Geçiş 'a' olarak
const A & a_
2) Geçiş 'a'
const A * a_
seçenek 1 dezavantajı Yanlışlıkla bir geçebilir olmasıdır
olarak r değeri. Seçenek 2'nin dezavantajı, boş bir işaretçiyi yanlışlıkla iletebileceğim.Sorularım: 1) Yukarıdaki dezavantajlar konusunda haklı mıyım? 2) Referans ile 'a' aktarmanın başka bir yolu var mı?
Aşağıdaki linkten cevapları gördüm. Ama bu soruda yayınlanandan başka seçenekler varsa merak ediyorum. http://en.cppreference.com/w/cpp/utility/functional/reference_wrapper/reference_wrapper
O, yani yapıcı aşırı yük çözünürlüğü buna bir rvalue geçmeye çalışması durumunda, bu yüzden rvalue referansı alır ekstra silinmiş yapıcı kazanır ve elde edersiniz: Are there benefits of passing by pointer over passing by reference in C++?
o yanlışlıkla bir r-değeri geçecek ve ne kadar ciddi olduğunu hamlenin sonuçlarının olacağı nasıl muhtemeldir? – emlai
Endişeleriniz varsa ve sorunları biliyorsanız, hata kontrolüne ihtiyacınız var. Referans olarak geçin ve deneyin/yakalayın. Bir işaretçi tarafından yaparsanız, nesnenizin orijinal örneğini değiştirirsiniz. –
Bir ritim nedir? Tanımlanmamış bir eşitlik mi? Bir değer gibi mi? –