เมื่อสร้างตัวแปรท้องถิ่นใช้ถูกต้อง(const) auto&
หรือauto
ไม่?
เช่น:
SomeClass object;
const auto result = object.SomeMethod();
หรือ const auto& result = object.SomeMethod();
โดยที่ SomeMethod () ส่งคืนค่าที่ไม่ใช่พื้นฐาน - อาจเป็นประเภทอื่นที่ผู้ใช้กำหนดเอง ความเข้าใจของฉันconst auto& result
ถูกต้องเนื่องจากผลลัพธ์ที่ SomeMethod () ส่งคืนจะเรียกตัวสร้างการคัดลอกสำหรับชนิดที่ส่งคืน กรุณาแก้ไขฉันถ้าฉันผิด
สิ่งที่เกี่ยวกับประเภทดั้งเดิม? ฉันถือว่าconst auto sum = 1 + 2;
ถูกต้อง
สิ่งนี้ใช้กับช่วงที่อิงกับลูปด้วยหรือไม่
for(const auto& object : objects)
auto
(ยกเว้นกรณีเฉพาะของinitializer_list
s ซึ่ง ได้แก่ ไม่อนุมานในบริบทเทมเพลต) จากนั้นauto
พิมพ์การหักลบ