เมื่อพูดถึงโอเปอเรเตอร์โอเวอร์โหลดใน C++ มีกฎพื้นฐาน 3 ข้อที่คุณควรปฏิบัติตาม เช่นเดียวกับกฎดังกล่าวทั้งหมดมีข้อยกเว้น กฎ 3 ข้อนี้คือ −
- 1. เมื่อใดก็ตามที่ความหมายของโอเปอเรเตอร์ไม่ชัดเจนและไม่มีปัญหาก็ไม่ควรเกินกำลัง ให้ระบุฟังก์ชันที่มีชื่อที่เลือกมาอย่างดีแทน โดยพื้นฐานแล้ว กฎข้อแรกและสำคัญที่สุดสำหรับผู้ดำเนินการโอเวอร์โหลดที่หัวใจหลักกล่าวว่า:
- อย่าทำ
- นั่นอาจดูแปลก แต่มีเพียงไม่กี่กรณีที่ตัวดำเนินการโอเวอร์โหลดนั้นเหมาะสม เหตุผลก็คือ ยากที่จะเข้าใจความหมายเบื้องหลังแอปพลิเคชันของโอเปอเรเตอร์ เว้นแต่ว่าการใช้งานของโอเปอเรเตอร์ในโดเมนของแอปพลิเคชันจะเป็นที่รู้จักและไม่มีปัญหา
- 2. ยึดติดกับความหมายที่รู้จักกันดีของผู้ปฏิบัติงานเสมอ C ++ ไม่มีข้อ จำกัด เกี่ยวกับความหมายของโอเปอเรเตอร์ที่ทับซ้อนกัน คอมไพเลอร์ของคุณสามารถจัดการกับโค้ดที่ใช้ตัวดำเนินการไบนารี + เพื่อคำนวณจากปริมาณที่เหมาะสมได้อย่างมีความสุข อย่างไรก็ตาม ผู้ใช้ของตัวดำเนินการเชื่อมโยงดังกล่าวจะไม่สงสัยนิพจน์ a + b เพื่อลบ a ออกจาก b
- 3. จัดเตรียมชุดปฏิบัติการที่เกี่ยวข้องทั้งหมดเสมอ
- ตัวดำเนินการมีความเกี่ยวข้องกันและกับการดำเนินการอื่นๆ หากประเภทของคุณรองรับ a + b ผู้ใช้ก็จะสามารถเรียก a +=b ได้เช่นกัน หากรองรับการเพิ่มคำนำหน้า ++a พวกเขาจะคาดหวังให้ a++ ทำงานเช่นกัน หากสามารถตรวจสอบได้ว่า a b ได้หรือไม่ หากพวกเขาสามารถคัดลอกและสร้างประเภทของคุณได้ พวกเขาก็คาดหวังว่าการมอบหมายงานจะได้ผลเช่นกัน
- ในกรณีส่วนใหญ่ คุณไม่จำเป็นต้องมีโอเปอเรเตอร์โอเวอร์โหลด และควรโอเวอร์โหลดโอเปอเรเตอร์เฉพาะเมื่อถูกกำหนดและเหมาะสมกับสถานการณ์ โพสต์นี้ได้รับแรงบันดาลใจจาก https://stackoverflow.com/a/4421708/3719089