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()