Trong C, chỉ định auto** cho phép khai báo biến có bộ nhớ tự động (automatic storage). auto là mặc định cho biến khai báo trong khối lệnh. Biến tự động bị hủy khi thoát khỏi khối lệnh chứa nó.
Bạn chỉ có thể áp dụng auto cho biến trong khối hoặc tham số hàm. Tuy nhiên, chúng mặc định đã có bộ nhớ tự động, nên auto thường thừa thãi trong khai báo dữ liệu.
Từ khóa này được kế thừa sang C++ ban đầu chỉ để tương thích cú pháp, nhưng sau đó (từ C++11) nhận nghĩa mới: suy diễn kiểu tự động (automatic type deduction).
Auto trong C++ hiện đại (C++11 trở đi)
Kể từ C++11, auto cho phép trình biên dịch tự động suy diễn kiểu dữ liệu từ biểu thức khởi tạo:
auto x = 42; // int
auto y = 3.14; // double
auto s = "hello"; // const char*
auto v = std::vector<int>{1,2,3}; // std::vector<int>
Điều này giúp code ngắn gọn, đặc biệt với kiểu phức tạp (iterator, template), và giảm lỗi khi refactor.