Auto เป็นคีย์เวิร์ดใน C++11 และใหม่กว่าที่ใช้สำหรับการหักประเภทอัตโนมัติ การอนุมานประเภทหรือการหักหมายถึงการตรวจหาชนิดข้อมูลของนิพจน์ในภาษาการเขียนโปรแกรมโดยอัตโนมัติ เป็นคุณลักษณะที่มีอยู่ในภาษาที่พิมพ์แบบคงที่อย่างยิ่ง ตัวอย่างเช่น คุณต้องการสร้างตัววนซ้ำเพื่อวนซ้ำบนเวกเตอร์ คุณสามารถใช้ auto เพื่อจุดประสงค์นั้นได้
ตัวอย่าง
#include<iostream>
#include<vector>
using namespace std;
int main() {
vector<int> arr(10);
for(auto it = arr.begin(); it != arr.end(); it ++) {
cin >> *it;
}
return 0;
}
ในโปรแกรมข้างบนนี้ มันจะได้ชนิด std::vector
ตัวระบุประเภท decltype ให้ผลลัพธ์ประเภทของนิพจน์ที่ระบุ ไม่เหมือนกับ auto ที่อนุมานประเภทตามค่าที่กำหนดให้กับตัวแปร decltype อนุมานประเภทจากนิพจน์ที่ส่งผ่านไปยังตัวแปรนั้น ค่าที่ส่งคืนโดย decltype สามารถใช้โดยตรงเพื่อกำหนดตัวแปรอื่น ตัวอย่างเช่น รหัสข้างต้นสามารถเขียนได้ดังต่อไปนี้โดยใช้ decltype −
ตัวอย่าง
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> arr(10);
for (decltype(arr.begin()) it = arr.begin(); it != arr.end(); it++) {
cin >> *it;
}
return 0;
}
โปรดทราบว่าประเภทที่แสดงโดย decltype อาจแตกต่างจากประเภทที่อนุมานโดยอัตโนมัติ คุณสามารถอ่านเพิ่มเติมเกี่ยวกับความแตกต่างที่ลึกซึ้งเหล่านี้ได้ในคำอธิบาย 12 หน้านี้เกี่ยวกับการหักประเภทใน C++ −http://thbecker.net/articles/auto_and_decltype/section_01.html