Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Từ khóa auto trong C++ làm gì?

auto là từ khóa C++ "kế thừa" từ C, tồn tại gần như mãi mãi nhưng gần như không bao giờ được dùng. Tất cả thay đổi khi C++11 giới thiệu auto để suy diễn kiểu từ ngữ cảnh (type deduction). Trước C++11, mọi kiểu dữ liệu phải khai báo tường minh tại compile-time, giới hạn giá trị biểu thức tại runtime. Từ C++11, nhiều từ khóa mới cho phép lập trình viên nhường việc suy diễn kiểu cho trình biên dịch.

Với khả năng suy diễn kiểu, chúng ta giảm thời gian viết những gì trình biên dịch đã biết. Mặc dù thời gian biên dịch tăng nhẹ do suy diễn kiểu, nhưng hiệu năng runtime không bị ảnh hưởng.

Từ khóa auto chỉ định kiểu của biến đang khai báo sẽ được suy diễn tự động từ giá trị khởi tạo. Đối với hàm, nếu kiểu trả về là auto, nó sẽ được đánh giá bởi biểu thức trả về tại runtime (C++14 trở đi).

Ví dụ

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> vec(10);
    
    // auto suy diễn kiểu là iterator của vector<int>
    for (auto it = vec.begin(); it != vec.end(); ++it) {
        cin >> *it;
    }
    return 0;
}

Các trường hợp sử dụng phổ biến

  • Iterator: for (auto it = vec.begin(); ...) thay vì vector<int>::iterator it = ...
  • Lambda: auto func = [](int x) { return x * 2; };
  • Kiểu phức tạp: auto ptr = std::make_unique<MyClass>();
  • Range-based for: for (auto& elem : container)

Lưu ý: auto không làm mất type safety – kiểu vẫn được xác định tại compile-time.