Khi tạo các biến cục bộ, sử dụng có đúng (const) auto&
hay auto
không?
ví dụ:
SomeClass object;
const auto result = object.SomeMethod();
hoặc là const auto& result = object.SomeMethod();
Trong đó SomeMethod () trả về một giá trị không phải nguyên thủy - có thể là một kiểu khác do người dùng xác định. Sự hiểu biết của tôi const auto& result
là đúng vì kết quả trả về bởi SomeMethod () sẽ gọi hàm tạo bản sao cho kiểu được trả về. Xin vui lòng sửa cho tôi nếu tôi sai.
Còn đối với các loại nguyên thủy thì sao? Tôi cho const auto sum = 1 + 2;
là đúng.
Điều này cũng áp dụng cho phạm vi dựa trên vòng lặp?
for(const auto& object : objects)
auto
hoạt động (ngoại trừ trường hợp đặc biệt củainitializer_list
s, là không được suy luận trong ngữ cảnh mẫu), sau đóauto
nhập suy luận.