อย่างแน่นอน วันนี้สามสิ่งที่มักจะอยู่ในบทที่ 2 ควรเคลื่อนไหวมากในภายหลัง:
- สตริงเป็นอาร์เรย์ของถ่าน *, strlen, strxxx วิธีการและอื่น ๆ
- อาร์เรย์โดยทั่วไปและตัวชี้เลขคณิต
- ลบสิ่งที่คุณใหม่ลบ [] สิ่งที่คุณใหม่ [] และแม้แต่ destructors
สิ่งเหล่านี้ซึ่งโดยปกติแล้วจะอยู่ในบทที่ 99 ควรมีความก้าวหน้ามาก
- เทมเพลตเป็นสิ่งที่ต้องใช้ (เขียนไม่มาก)
- มาตรฐาน :: สตริง
- มาตรฐาน :: shared_ptr <>
- std :: vector <> ตัววนซ้ำคอลเลกชันอื่น ๆ
ควรให้ตัวชี้ raw ของ Evey กับตัวชี้สมาร์ทแวปเปอร์ทันที (ฉันจะเริ่มด้วยการแบ่งใช้และพิจารณาที่ไม่ซ้ำกันในภายหลังเนื่องจากต้องอธิบาย std :: move และการอ้างอิงค่า rvalue) การทำเช่นนี้จะทำให้การเรียนรู้ C ++ รู้สึกเหมือนการเรียนรู้ Java หรือ C # ที่คุณเรียนรู้ห้องสมุดในเวลาเดียวกันกับภาษา มันจะใช้ความทรงจำมากมายเช่นกันและทำให้ผู้คนกังวลน้อยลงเกี่ยวกับ gotchas
ฉันยังจะใช้ลูกแกะในภาพเป็นครั้งแรกที่เราต้องการทำซ้ำผ่านคอลเลกชันและทำบางสิ่งบางอย่างกับองค์ประกอบแต่ละอย่าง
ข้อจำกัดความรับผิดชอบ: ฉันกำลังเขียนหลักสูตร C ++ สำหรับ Pluralsight ในขณะนี้และใช้วิธีการนี้ โมดูลสุดท้ายคือ "การทำความเข้าใจโค้ดของคนอื่น" และนั่นคือที่ที่ฉันจะทำให้สิ่งที่สับสนเช่นสตริง char * การจัดการหน่วยความจำด้วยตนเองเลขคณิตตัวชี้และอื่น ๆ
อัปเดต:มีบางคนถามว่าทำไมการมีอยู่ของ C ++ 0x เป็นแรงบันดาลใจในการสอนสิ่งต่าง ๆ ที่สามารถสอนด้วย C ++ 03 ฉันคิดว่ามันมีหลายสิ่ง:
- พอยน์เตอร์อัจฉริยะอย่างแท้จริงที่เป็นมิตรกับการสะสมนำความต้องการสิ่งต่าง ๆ เช่น "อาเรย์ของพอยน์เตอร์ของพนักงาน" ที่ทำให้เรากลับมาใหม่ / ลบตัวชี้เลขคณิตเป็นต้น
- อัตโนมัตินำความเจ็บปวดจากการประกาศตัววนซ้ำ
- lambdas ทำสิ่งต่าง ๆ ที่คนธรรมดาจะทำ
- แม้กระทั่งบางสิ่งที่ไม่สำคัญเท่าการวิเคราะห์คำ
>>
อย่างถูกต้องก็จะกำจัด gotcha ที่จะเกิดขึ้นเมื่อประกาศแม่แบบบางอย่าง
- และอื่น ๆ
วิธีที่ฉันเห็นมันมีหลายสิ่งที่เราสามารถเปลี่ยนแปลงได้เกี่ยวกับวิธีที่เราสอน C ++ เมื่อเวลาผ่านมา แต่พวกเราบางคนรั้งไว้เพราะเรายังต้องการวิธีการเรียนแบบเก่าสำหรับทางเลือกหรือเพราะการสอนมันเกี่ยวข้องมาก ของความรู้ลึกลับ