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

การเปลี่ยนแปลงใหม่ใน C++11 มีอะไรบ้าง


C++11 เป็นภาษา C++ มาตรฐานรุ่นหนึ่ง ได้รับการอนุมัติจาก International Organisation for Standardization (ISO) เมื่อวันที่ 12 สิงหาคม 2011 จากนั้น C++14 และ C++17 C++11 เพิ่มภาษาหลักหลายประการ

มีการเปลี่ยนแปลงใหม่ใน C++11 -

  • nullptr − ใน nullptr ก่อนหน้า ศูนย์เคยเป็นค่าและมีข้อเสียเปรียบของการแปลงโดยปริยายเป็นค่าปริพันธ์ ลิเทอรัลพอยน์เตอร์ null ถูกแสดงโดยstd::nullptr_t ใน nullptr นี้ ไม่มีการแปลงโดยนัย

  • แลมบ์ดาส − นิพจน์แลมบ์ดาอนุญาตให้กำหนดฟังก์ชันในเครื่อง ฟังก์ชันที่ไม่ระบุชื่อเรียกว่าแลมบ์ดา เราสามารถใช้นิพจน์แลมบ์ดาได้ทุกที่ที่คาดว่าวัตถุฟังก์ชัน std::function

  • ตัวชี้อัจฉริยะ − ตัวชี้อัจฉริยะ auto_ptr เป็นตัวชี้อัจฉริยะเพียงตัวเดียว และตอนนี้เลิกใช้แล้ว มีการเพิ่มตัวชี้อัจฉริยะอีกสามตัวใน C++11 เช่น shared_ptr,unique_ptr และจุดอ่อน_ptr

  • อัตโนมัติ - ในเวอร์ชันก่อนหน้า เราต้องระบุประเภทของวัตถุ แต่ใน C++11 ไม่จำเป็นต้องระบุประเภท ซึ่งหมายความว่าคุณสามารถประกาศตัวแปรได้โดยตรงโดยไม่ต้องระบุประเภท

  • ลบล้างและสิ้นสุด − เวอร์ชัน C++11 ได้แนะนำตัวระบุพิเศษใหม่สองตัว นั่นคือ การแทนที่และขั้นสุดท้าย การแทนที่บ่งชี้ว่าเมธอดควรจะแทนที่เมธอดเสมือนในคลาสฐาน ในทางกลับกัน Final ระบุว่าคลาสที่ได้รับไม่ควรแทนที่เมธอดเสมือน

  • ฟังก์ชั่นที่ถูกลบและเริ่มต้น − ฟังก์ชันที่ถูกลบมีประโยชน์ในการป้องกันการคัดลอกวัตถุ หากต้องการปิดใช้งานการคัดลอก " =delete; " ถูกนำมาใช้. ฟังก์ชันเริ่มต้นจะให้คำแนะนำแก่คอมไพเลอร์เพื่อสร้างการใช้งานเริ่มต้นของฟังก์ชันและ " =default;" ใช้สำหรับฟังก์ชันเริ่มต้น

  • ตามช่วงสำหรับลูป − C++11 แนะนำตามช่วงสำหรับการวนซ้ำสำหรับการวนซ้ำคอลเลกชัน ตอนนี้ เป็นไปได้ที่จะวนซ้ำเหมือน C-array รองรับกระบวนทัศน์ 'foreach' ของการวนซ้ำ

  • enums ที่พิมพ์แรง − ใน enums ดั้งเดิม พวกเขาเคยส่งออกตัวแจงนับในขอบเขตโดยรอบ พวกเขาถูกระบุเป็นคีย์เวิร์ด "enum class" พวกเขาไม่ส่งออกตัวแจงนับในขอบเขตโดยรอบ

  • Static_assert และลักษณะการพิมพ์ − มันทำการตรวจสอบยืนยันในขณะที่รวบรวม หากการยืนยันเป็นจริง จะไม่แสดงข้อมูลใดๆ มิฉะนั้นจะแสดงข้อความแสดงข้อผิดพลาด

  • อัลกอริธึม C++ ใหม่ − ไลบรารีมาตรฐาน C++11 ได้แนะนำอัลกอริธึมใหม่พร้อมการดำเนินการบางอย่าง เช่น all_of(), any_of และ none_of()