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

auto และ decltype ใน C ++ คืออะไร


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::iterator.

โดยอัตโนมัติ

ตัวระบุประเภท 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