10
ฉันควรเลือกพอยน์เตอร์หรือการอ้างอิงในข้อมูลสมาชิกหรือไม่?
นี่เป็นตัวอย่างง่าย ๆ เพื่อแสดงคำถาม: class A {}; class B { B(A& a) : a(a) {} A& a; }; class C { C() : b(a) {} A a; B b; }; ดังนั้น B เป็นผู้รับผิดชอบสำหรับการปรับปรุงส่วนหนึ่งของซีฉันวิ่งรหัสผ่านผ้าสำลีและมัน whinged เกี่ยวกับสมาชิกในการอ้างอิง: ผ้าสำลี # 1725 การพูดคุยเกี่ยวกับการดูแลการคัดลอกและการมอบหมายเริ่มต้นที่ยุติธรรมพอ แต่การคัดลอกและการมอบหมายเริ่มต้นก็ไม่ดีสำหรับพอยน์เตอร์ดังนั้นจึงมีข้อได้เปรียบเล็กน้อย ฉันมักจะพยายามใช้การอ้างอิงที่ฉันสามารถทำได้เนื่องจากพอยน์เตอร์พอยน์เตอร์แนะนำความไม่แน่นอนเกี่ยวกับผู้ที่รับผิดชอบในการลบตัวชี้นั้น ฉันชอบที่จะฝังวัตถุตามค่า แต่ถ้าฉันต้องการตัวชี้ฉันใช้ auto_ptr ในข้อมูลสมาชิกของคลาสที่เป็นเจ้าของตัวชี้และส่งวัตถุไปรอบ ๆ เพื่ออ้างอิง ฉันมักจะใช้ตัวชี้ในข้อมูลสมาชิกเท่านั้นเมื่อตัวชี้อาจเป็นโมฆะหรือสามารถเปลี่ยนแปลงได้ มีเหตุผลอื่นอีกไหมที่จะชอบพอยน์เตอร์มากกว่าการอ้างอิงสำหรับสมาชิกข้อมูล เป็นความจริงหรือไม่ที่จะบอกว่าวัตถุที่มีการอ้างอิงไม่ควรกำหนดได้เนื่องจากการอ้างอิงไม่ควรเปลี่ยนเมื่อเริ่มต้น?