ความจริงง่ายๆก็คือว่าหลายถ้าไม่ที่สุด, C ++ ผู้ใช้สามารถแทบจะไม่เข้าใจว่าvector
จะดีกว่าmalloc
และfree
ดังนั้นจำนวนที่ไม่เพียง แต่สามารถชื่นชม แต่ใช้แม่แบบ metaprogramming ขั้นสูงไม่สูงมาก นี่ก็หมายความว่าแม้ว่ามันจะดีสำหรับ 90% ของสถานการณ์ แต่คุณจะเห็นมันน้อยกว่ามากเพราะผู้คนไม่รู้เกี่ยวกับมันหรือวิธีใช้มัน
แต่ฟังก์ชั่นเสมือนจริงจะมีข้อได้เปรียบคือหน้าที่เสมือนเป็นเรื่องง่ายกว่าที่จะใช้ CRTP เทมเพลต C ++ นั้นมีชื่อเสียงในการเป็นคนเลวร้ายเกี่ยวกับทุกสิ่งและทุกอย่าง
อย่างไรก็ตามฟังก์ชั่นเหล่านั้น [ฟังก์ชั่นเสมือน] นั้นช้ากว่าและมีพลังน้อยกว่าอย่างชัดเจน ตัวอย่างเช่นตอนนี้ฉันกำลังเขียนโค้ดโดยใช้ CRTP ซึ่งคุณได้รับโอเปอเรเตอร์โอเวอร์โหลดสำหรับใช้กับเท็มเพลตนิพจน์ ไม่มีทางที่ฟังก์ชั่นเสมือนอาจใช้งานได้