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++ −https://thbecker.net/articles/auto_and_decltype/section_01.html