กลับสู่คอร์สเรียน
AI013 Professional

คู่มือ C++ สมัยใหม่

คู่มือการเรียนนี้มีวัตถุประสงค์เพื่อให้ผู้พัฒนาที่มีประสบการณ์ได้รับข้อมูลอ้างอิงอย่างรวดเร็วเกี่ยวกับคุณสมบัติใหม่ของ C++11/14/17/20 โดยครอบคลุมการปรับปรุงด้านความสามารถในการใช้งานของภาษา ประสิทธิภาพในช่วงเวลาทำงาน โครงสร้างข้อมูลใหม่ ตัวชี้อัจฉริยะและการจัดการหน่วยความจำ การจัดรูปแบบแบบสม่ำเสมอ การเขียนโปรแกรมแบบขนาน และบทนำสำหรับ C++20

4.8
30.0h
318 ผู้เรียน
2 การถูกใจ
ปัญญาประดิษฐ์
เริ่มเรียน

ภาพรวมคอร์สเรียน

📚 สรุปเนื้อหา

คู่มือการเรียนนี้ออกแบบมาเพื่อให้ผู้พัฒนาที่มีประสบการณ์ได้ใช้เป็นแนวทางย่อสำหรับคุณสมบัติใหม่ของ C++11/14/17/20 โดยเนื้อหาครอบคลุมการปรับปรุงด้านความสะดวกในการใช้งานของภาษา การปรับปรุงประสิทธิภาพในเวลาทำงาน การใช้คอนเทนเนอร์ใหม่ ชี้แจงตัวชี้วัดและจัดการหน่วยความจำ แบบแสดงรูปแบบ (Regular Expressions) การเขียนโปรแกรมแบบขนาน และการทบทวนลักษณะสำคัญของ C++20

เรียนรู้อย่างรวดเร็วเกี่ยวกับ C++11/14/17/20 และก้าวข้ามสู่โลกของการเขียนโปรแกรมแบบสมัยใหม่ของภาษา C++

ผู้เขียน: โอ่ว เฉียงกุน (Ou Changkun)

คำขอบคุณ: อนุญาตภายใต้ข้อกำหนดแบบ CC BY-NC-ND 4.0 ขอขอบคุณผู้มีส่วนร่วมทุกคนบน GitHub และชุมชนสนับสนุนที่เกี่ยวข้อง

🎯 เป้าหมายการเรียนรู้

  1. ระบุและตรวจสอบสภาพแวดล้อมคอมไพเลอร์ C++ และสถาปัตยกรรมเป้าหมายโดยใช้เครื่องมือจากบรรทัดคำสั่ง
  2. อธิบายความเข้ากันได้ของมาตรฐานและประวัติที่ทับซ้อนกันระหว่างภาษา C (C89, C99, C11) และภาษา C++ (C++98, C++1x)
  3. ใช้หัวไฟล์ extern "C" และกระบวนการคอมไพล์หลายขั้นตอน เพื่อจัดการการเชื่อมต่อข้ามภาษาอย่างมีประสิทธิภาพ
  4. แก้ไขความไม่แน่นอนของตัวชี้ (pointer ambiguity) โดยใช้ nullptr และใช้ constexpr และ if constexpr เพื่อสร้างตรรกะในขณะคอมไพล์
  5. ลดความซับซ้อนของคำประกาศโดยใช้ auto, decltype, และการตั้งชื่อประเภท (using) พร้อมรักษาหลักการออกแบบเชิงวัตถุที่แข็งแรงด้วย override และ final
  6. ออกแบบโค้ดที่มีความยืดหยุ่นสูงโดยใช้เทมเพลตแบบตัวแปร (variadic templates), นิพจน์แบบพับ (fold expressions), และการอนุมานพารามิเตอร์เทมเพลตที่ไม่ใช่ประเภท (non-type template parameter deduction)
  7. กำหนดและดำเนินการใช้ฟังก์ชันลัมบ์ (Lambda expressions) โดยใช้โหมดการจับข้อมูลต่างๆ (ค่า, ค่าอ้างอิง, นิพจน์, และทั่วไป)
  8. ใช้ std::function และ std::bind เพื่อสร้างฟังก์ชันที่ยืดหยุ่นและแอปพลิเคชันฟังก์ชันบางส่วน
  9. แยกประเภทนิพจน์ออกเป็น Lvalues, Prvalues, และ Xvalues และนำแนวคิดการเคลื่อนย้ายทรัพยากร (Move Semantics) มาใช้เพื่อเพิ่มประสิทธิภาพการจัดการทรัพยากรในคลาส
  10. แยกแยะโมเดลหน่วยความจำและกรณีใช้งานของ std::array (ขนาดคงที่, บนสแต็ก) กับ std::vector (ขนาดเปลี่ยนแปลงได้, บนฮีป)

บทเรียน