Gần đây tôi đã tự hỏi tại sao từ khóa auto
được chọn trong C ++ 11 để đánh dấu một biến có loại phải được trình biên dịch suy ra, như trong
auto x = 1;
Kể từ khi
var
dường như phổ biến hơn trong các ngôn ngữ lập trình khác (ví dụ: C #, Scala, JavaScript) và- Theo như tôi hiểu về ngữ nghĩa mới của sự
auto
phá vỡ tính tương thích ngược (nó hiếm khi được sử dụng nhưng có ý nghĩa khác trong các phiên bản trước của C ++, xem ví dụ ở đây )
Tôi muốn hỏi nếu có một lý do đặc biệt để lựa chọn auto
(ủng hộ var
hoặc bất kỳ từ khóa nào khác). Có cuộc thảo luận cụ thể nào về vấn đề này trước khi tiêu chuẩn C ++ 11 được phát hành không?
Ngoài ra, có bất kỳ sự không tương thích nào có thể xảy ra mà chúng ta nên đề phòng khi biên dịch lại mã C ++ kế thừa với trình biên dịch C ++ 11 không?
auto
vs var
là 90% văn bản của bạn đề cập đến điều gì và câu hỏi đó không có kết quả rõ ràng. (mặc dù tôi không phải là người đã bỏ phiếu đóng cửa)
auto
đã được đề xuất cho C ++ trước khi var
được giới thiệu trong C #, vì vậy câu hỏi đặt ra là tại sao C # không sử dụng auto. var có một ý nghĩa khác trong JavaScript và Scala
auto
có thể phá vỡ tính tương thích ngược, nhưng, tùy thuộc vào mức độ thường xuyênvar
được sử dụng làm tên biến so với tần suấtauto
sử dụng từ khóa trong mã trước 11, ủy ban có thể cho rằng nó phá vỡ tính tương thích ít hơn so với giới thiệu mới từ khóa sẽ.