Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

คีย์เวิร์ด auto ใน C++ ทำหน้าที่อะไร?

Auto เป็นคีย์เวิร์ดที่ C++ "สืบทอด" มาจาก C ที่มีมานานเกือบตลอดกาล แต่เกือบไม่เคยถูกใช้งาน สิ่งนี้เปลี่ยนไปเมื่อมีการนำ auto มาทำ type deduction จาก context ใน C++11 ก่อน C++11 ทุกชนิดข้อมูลต้องประกาศชัดเจนที่ compile time จำกัดค่าของ expression ที่ runtime แต่หลังจากเวอร์ชันใหม่ของ C++ มีคีย์เวิร์ดหลายตัวที่เพิ่มเข้ามา ซึ่งช่วยให้โปรแกรมเมอร์สามารถปล่อยให้คอมไพเลอร์ทำ type deduction เองได้

ด้วยความสามารถในการอนุมานชนิด (type inference) เราสามารถลดเวลาที่ต้องเขียนสิ่งที่คอมไพเลอร์รู้อยู่แล้ว เนื่องจากทุกชนิดถูกอนุมานในขั้นตอน compile time เท่านั้น เวลาคอมไพล์เพิ่มขึ้นเล็กน้อย แต่ไม่ส่งผลต่อ runtime ของโปรแกรม

คีย์เวิร์ด auto ระบุว่าชนิดของตัวแปรที่กำลังประกาศจะถูกอนุมานโดยอัตโนมัติจาก initializer ของมัน และสำหรับฟังก์ชัน หาก return type เป็น auto จะถูกประเมินจาก return type expression ที่ runtime

ตัวอย่าง

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector<int> vec(10);
    // Auto deduce type to be iterator of a vector of ints.
    for(auto it = vec.begin(); it != vec.end(); ++it) {
        cin >> *it;
    }
    return 0;
}