C ++ เป็นมากกว่าหนึ่งภาษาการเขียนโปรแกรม:
a) มันเป็น "ดีกว่า" C b) มันเป็นภาษาเชิงวัตถุ c) มันเป็นภาษาที่ช่วยให้เราสามารถเขียนโปรแกรมทั่วไป
แม้ว่าคุณสมบัติทั้งหมดเหล่านี้สามารถใช้แยกกันได้ แต่ผลลัพธ์ที่ดีที่สุดจะเกิดขึ้นได้เมื่อใช้สามคุณสมบัติพร้อมกัน อย่างไรก็ตามหากคุณเลือกที่จะเลือกหนึ่งในนั้นคุณภาพของซอฟต์แวร์ฝังตัวจะเพิ่มขึ้น
a) มันเป็น "ดีกว่า" ค
C ++ เป็นภาษาที่พิมพ์ได้ดี แข็งแกร่งกว่า C. โปรแกรมของคุณจะได้รับประโยชน์จากคุณสมบัตินี้
บางคนกลัวพอยน์เตอร์ C ++ รวมถึงการอ้างอิง ฟังก์ชั่นโอเวอร์โหลด
และคุ้มค่าที่จะพูด: ไม่มีคุณสมบัติเหล่านี้เกิดขึ้นในโปรแกรมที่ใหญ่กว่าหรือช้ากว่า
b) เป็นภาษาเชิงวัตถุ
มีคนพูดในโพสต์นี้ว่าการทำให้เครื่องในไมโครคอนโทรลเลอร์เป็นไปไม่ได้เป็นความคิดที่ดี ไม่ถูกต้อง! พวกเราทุกคนวิศวกรที่ฝังตัวได้แยกเครื่องเสมอโดยเฉพาะกับ sintax อื่น ๆ ที่ C ++ ปัญหาที่ฉันเห็นด้วยอาร์กิวเมนต์นี้คือโปรแกรมเมอร์บางคนไม่ได้ใช้ในการคิดในวัตถุนั่นคือวิธีที่พวกเขาไม่เห็นประโยชน์ของ OOP
เมื่อใดก็ตามที่คุณพร้อมที่จะใช้อุปกรณ์ต่อพ่วงของไมโครคอนโทรลเลอร์มันอาจเป็นไปได้ว่าอุปกรณ์ต่อพ่วงได้ถูกทำให้เป็นนามธรรมสำหรับเรา (จากตัวคุณเองหรือบุคคลที่สาม) ในรูปแบบของไดรเวอร์อุปกรณ์ อย่างที่ฉันพูดไว้ก่อนหน้านี้ไดรเวอร์นั้นใช้ C sintax ดังตัวอย่างต่อไปนี้แสดง (นำมาโดยตรงจากตัวอย่าง NXP LPC1114):
/ * การตั้งค่าตัวจับเวลาสำหรับการจับคู่และขัดจังหวะที่ TICKRATE_HZ * /
Chip_TIMER_Reset (LPC_TIMER32_0);
Chip_TIMER_MatchEnableInt (LPC_TIMER32_0, 1);
Chip_TIMER_SetMatch (LPC_TIMER32_0, 1, (timerFreq / TICKRATE_HZ2));
Chip_TIMER_ResetOnMatchEnable (LPC_TIMER32_0, 1);
Chip_TIMER_Enable (LPC_TIMER32_0);
คุณเห็นสิ่งที่เป็นนามธรรมหรือไม่? ดังนั้นเมื่อใช้ C ++ เพื่อจุดประสงค์เดียวกัน Abstraction จะถูกนำไปสู่อีกระดับผ่านกลไก Abstraction และ Encapsulation ของ C ++ ในราคาศูนย์!
c) เป็นภาษาที่ช่วยให้เราสามารถเขียนโปรแกรมทั่วไป
โปรแกรมทั่วไปสามารถทำได้ผ่านแม่แบบและแม่แบบนั้นไม่มีค่าใช้จ่ายสำหรับโปรแกรมของเรา
นอกจากนี้รูปแบบคงที่จะประสบความสำเร็จกับแม่แบบ
วิธีเสมือน RTTI และข้อยกเว้น
มีการประนีประนอมเมื่อใช้วิธีการเสมือน: ซอฟต์แวร์ที่ดีกว่าและโทษในประสิทธิภาพ อย่างไรก็ตามโปรดจำไว้ว่าการเชื่อมโยงแบบไดนามิกมีแนวโน้มที่จะนำมาใช้โดยใช้ตารางเสมือน (อาเรย์ของตัวชี้ฟังก์ชัน) ฉันทำแบบเดียวกันใน C หลายครั้ง (แม้เป็นประจำ) ดังนั้นฉันจึงไม่เห็นข้อเสียในการใช้วิธีการเสมือน ยิ่งไปกว่านั้นวิธีการเสมือนใน C ++ นั้นสง่างามยิ่งกว่า
ในที่สุดคำแนะนำเกี่ยวกับ RTTI และข้อยกเว้น: อย่าใช้พวกเขาในระบบฝังตัว หลีกเลี่ยงค่าใช้จ่ายทั้งหมด !!