คำถามติดแท็ก member-functions

2
ตัวดำเนินการมากเกินไป: ฟังก์ชันสมาชิกเทียบกับฟังก์ชันที่ไม่ใช่สมาชิก?
ฉันอ่านว่าโอเปอเรเตอร์โอเวอร์โหลดที่ประกาศว่าเป็นฟังก์ชันสมาชิกนั้นไม่สมมาตรเนื่องจากสามารถมีได้เพียงพารามิเตอร์เดียวและพารามิเตอร์อื่นที่ส่งผ่านโดยอัตโนมัติคือthisตัวชี้ ดังนั้นจึงไม่มีมาตรฐานที่จะเปรียบเทียบได้ ในทางกลับกันโอเปอเรเตอร์ที่โอเวอร์โหลดถูกประกาศว่า a friendเป็นแบบสมมาตรเนื่องจากเราส่งผ่านอาร์กิวเมนต์ประเภทเดียวกันสองอาร์กิวเมนต์ดังนั้นจึงสามารถเปรียบเทียบกันได้ คำถามของฉันคือเมื่อฉันยังสามารถเปรียบเทียบค่าของตัวชี้กับข้อมูลอ้างอิงได้ทำไมเพื่อนถึงชอบ? (การใช้เวอร์ชันอสมมาตรให้ผลลัพธ์เหมือนกับแบบสมมาตร) เหตุใดอัลกอริทึม STL จึงใช้เฉพาะเวอร์ชันสมมาตร

1
ข้อผิดพลาด: อาร์กิวเมนต์เริ่มต้นที่กำหนดสำหรับพารามิเตอร์ 1
ฉันได้รับข้อความแสดงข้อผิดพลาดพร้อมรหัสด้านล่าง: class Money { public: Money(float amount, int moneyType); string asString(bool shortVersion=true); private: float amount; int moneyType; }; ก่อนอื่นฉันคิดว่าไม่อนุญาตให้ใช้พารามิเตอร์เริ่มต้นเป็นพารามิเตอร์แรกใน C ++ แต่ได้รับอนุญาต
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.