typeid ใน C ++ คืออะไร

Typeid Ni C Khux Xari



ภาษาซี++ เป็นภาษาโปรแกรมที่มีประสิทธิภาพซึ่งนำเสนอแอปพลิเคชันที่หลากหลายแก่ผู้ใช้ สิ่งสำคัญของภาษาโปรแกรม C++ คือความสามารถในการรองรับการระบุประเภทรันไทม์ เดอะ พิมพ์ เป็นหนึ่งในการระบุประเภทรันไทม์ที่ใช้กันอย่างแพร่หลายในโปรแกรม C++

หากคุณไม่รู้ว่าอะไร พิมพ์ อยู่ใน C ++ ทำตามคำแนะนำของบทความนี้







ตัวดำเนินการ typeid ใน C ++

เดอะ พิมพ์ เป็นโอเปอเรเตอร์ในตัวในภาษาโปรแกรม C++ ที่ช่วยให้ผู้ใช้สามารถกำหนดชนิดข้อมูลของตัวแปรในขณะรันไทม์ ค่าที่ส่งคืนโดย พิมพ์ เป็นประเภท “พิมพ์ข้อมูล “ ซึ่งให้รายละเอียดต่าง ๆ เกี่ยวกับประเภทของวัตถุ เป็นสิ่งสำคัญในกรณีที่โปรแกรมต้องดำเนินการหลายอย่างตามประเภทข้อมูลที่ใช้



ไวยากรณ์ของ typeid



ไวยากรณ์ของ พิมพ์ โอเปอเรเตอร์ในภาษา C++ เป็นดังนี้:





พิมพ์ ( พิมพ์ )

หรือ:



พิมพ์ ( ประสบการณ์ )

เดอะ พิมพ์ โอเปอเรเตอร์ใน C++ ยอมรับหนึ่งในสองพารามิเตอร์นี้

พิมพ์ : เมื่อเราต้องการทราบประเภทรันไทม์ของตัวแปรหรือวัตถุ เราจะใส่อาร์กิวเมนต์ประเภทภายใน พิมพ์ ผู้ประกอบการ ในกรณีนี้จำเป็นต้องใช้อาร์กิวเมนต์ประเภทเท่านั้น และข้อมูลประเภทรันไทม์จะถูกรวบรวมโดยไม่มีการประเมินเพิ่มเติมหรือการคำนวณล่วงหน้า

การแสดงออก : เมื่อเราต้องการรายละเอียดเกี่ยวกับประเภทรันไทม์ของนิพจน์ พารามิเตอร์นิพจน์จะได้รับภายใน พิมพ์ ผู้ประกอบการ ข้อมูลเกี่ยวกับประเภทรันไทม์จะใช้หลังจากนิพจน์ในพารามิเตอร์นี้ได้รับการประเมินแล้ว

เมื่อใช้กับ พิมพ์ จะให้ข้อมูลเกี่ยวกับประเภทที่สอดคล้องกับตัวระบุ เมื่อใช้กับนิพจน์ จะให้ข้อมูลเกี่ยวกับประเภทไดนามิกของวัตถุ

การใช้ตัวดำเนินการ typeid

เดอะ พิมพ์ สามารถใช้ตัวดำเนินการในลักษณะเหล่านี้ได้

1: เมื่อตัวดำเนินการทำหน้าที่เป็นตัวแปรของวัตถุ

เดอะ พิมพ์ ตัวดำเนินการสามารถใช้กับตัวถูกดำเนินการเมื่อทำหน้าที่เป็นตัวแปรของวัตถุ

#รวมถึง
#รวม
ใช้เนมสเปซ std;

int หลัก ( ) {
int ฉัน;
ถ่าน ch;
ชั้นลอย;
ดับเบิลเดซิเบล;

Const type_info & type_i = typeid ( ฉัน ) ;
Const type_info & type_ch = typeid ( ) ;
Const type_info & type_fl = typeid ( ใน ) ;
Const type_info & type_db = typeid ( ฐานข้อมูล ) ;

ศาล << 'ประเภทของ int i คือ: ' << type_i.name ( ) ;
ศาล << ' \n ประเภทของตัวอักษร ch คือ: ' << type_ch.name ( ) ;
ศาล << ' \n ประเภทของชั้นลอยคือ: ' << type_fl.name ( ) ;
ศาล << ' \n ประเภทของ double db คือ: ' << type_db.name ( ) << ' \n ' ;

กลับ 0 ;
}

ในโค้ดข้างต้น เรากำลังประกาศตัวแปรที่แตกต่างกันสี่ตัว โดยแต่ละชนิดข้อมูลแยกกัน จากนั้นเรากำลังใช้ พิมพ์ ตัวดำเนินการกับตัวแปรเหล่านี้และพิมพ์ชนิดข้อมูลโดยใช้คำสั่ง cout

เอาต์พุต

2: เมื่อตัวถูกดำเนินการเป็นนิพจน์

เดอะ พิมพ์ นอกจากนี้ยังสามารถใช้ตัวดำเนินการในกรณีที่ตัวถูกดำเนินการเป็นนิพจน์

#รวมถึง
#รวม
ใช้เนมสเปซ std;

int หลัก ( ) {
int ฉัน = 7 ;
ถ่าน ช = 'เอ' ;
ชั้นลอย = 42.4 ;
ดับเบิ้ล ดีบี = 4,279 ;

Const type_info & type_a = typeid ( ฉัน + ช ) ;
Const type_info & type_b = typeid ( ฉัน * ใน ) ;
Const type_info & type_c = typeid ( ฐานข้อมูล * ใน ) ;
Const type_info & type_d = typeid ( ผม+ฐานข้อมูล ) ;

ศาล << 'นิพจน์ i+ch : ' << type_a.name ( ) ;
ศาล << ' \n นิพจน์ i*fl : ' << type_b.name ( ) ;
ศาล << ' \n นิพจน์ db*fl : ' << type_c.name ( ) ;
ศาล << ' \n นิพจน์ i+db : ' << type_d.name ( ) ;
กลับ 0 ;
}

ในโค้ดข้างต้น เราเริ่มต้นตัวแปรสี่ตัวที่มีประเภทข้อมูลต่างกัน จากนั้นเราจะประเมินนิพจน์และคำนวณประเภทของมันโดยใช้ C++ พิมพ์ () ตัวดำเนินการ

เอาต์พุต

ข้อดีและข้อเสียของ typeid ใน C++

เดอะ พิมพ์ มีประโยชน์เมื่อเขียนโค้ดที่ทำงานกับออบเจกต์ที่ไม่รู้จักจนกว่าจะรันไทม์ ตัวอย่างเช่น สมมติว่าฟังก์ชันใช้ตัวชี้โมฆะเป็นพารามิเตอร์ ก็ใช้ได้ พิมพ์ เพื่อระบุว่าตัวชี้เป็น int หรือ double ซึ่งอาจส่งผลต่อวิธีการทำงานของฟังก์ชันอย่างมาก

นอกจากชื่อประเภทแล้ว ตัว “ พิมพ์ข้อมูล ” วัตถุยังมีรายละเอียดอื่น ๆ อีกมากมายเกี่ยวกับประเภท เหล่านี้รวมถึง:

  • ไม่ว่าประเภทจะเป็นประเภทพื้นฐาน ประเภทตัวชี้ หรือประเภทที่ผู้ใช้กำหนดเอง
  • ไม่ว่าจะเป็นประเภท 'const' หรือ 'volatile'
  • พิจารณาว่าประเภทนั้นเป็นประเภทคลาสหรือไม่ และถ้าใช่ จะเป็นประเภทโพลีมอร์ฟิคหรือไม่
  • ว่าประเภทนั้นเป็นประเภทอาร์เรย์หรือไม่ และถ้าใช่ มิติข้อมูลคืออะไร
  • ระบุประเภทว่าเป็นประเภทอ้างอิงหรือไม่

เดอะ พิมพ์ ยังมีประโยชน์เมื่อต้องจัดการกับเทมเพลตและฟังก์ชันที่รับอาร์กิวเมนต์เป็นจำนวนตัวแปร โดยใช้ “ พิมพ์ ” โอเปอเรเตอร์ คุณสามารถดำเนินการเฉพาะประเภท ณ รันไทม์ เช่น การเลือกเทมเพลตหรือฟังก์ชันที่เหมาะสมที่จะใช้

ข้อเสียเปรียบประการหนึ่งที่เป็นไปได้ของ พิมพ์ คือมันค่อนข้างช้า โดยทั่วไปจะช้ากว่าการตรวจสอบประเภทอื่นๆ เช่น พารามิเตอร์เทมเพลตหรือการตรวจสอบประเภทเวลาคอมไพล์ เนื่องจากตรวจสอบประเภทของอ็อบเจ็กต์ระหว่างรันไทม์

บทสรุป

พิมพ์ ตัวดำเนินการ ” ใน C++ ให้ข้อมูลที่มีค่าเกี่ยวกับประเภทข้อมูลของตัวแปรหรือวัตถุ อนุญาตให้โปรแกรมเมอร์ดำเนินการเฉพาะประเภทที่รันไทม์ และสามารถใช้ได้เมื่อตัวถูกดำเนินการเป็นตัวแปร หรือเมื่อตัวถูกดำเนินการเป็นนิพจน์