เกี่ยวกับโอเปอเรเตอร์โอเวอร์โหลดใน C ++

ฉันมีคำถามเกี่ยวกับโอเปอเรเตอร์ สมมติว่าฉันมีคลาส myclass และฉันมีโอเปอเรเตอร์มากเกินไป *=, [] และ +

ฉันสามารถเข้าถึงได้ภายในฟังก์ชั่นสมาชิกด้วย this->*=, this->[], *this + * this... ?


person user2370139    schedule 13.05.2013    source แหล่งที่มา


คำตอบ (4)


ใช่ คุณสามารถเข้าถึงได้หลายวิธี ตัวอย่างเช่น คุณสามารถทำสิ่งนี้:

*this + something

หรืออีกทางหนึ่ง:

this->operator+(something)
person Joseph Mansfield    schedule 13.05.2013

this เป็นเพียงตัวชี้ คุณสามารถทำสิ่งต่อไปนี้ทั้งหมดด้วยพอยน์เตอร์ใดก็ได้

นี่เป็นวิธีที่ต้องการเนื่องจากไม่สูญเสียไวยากรณ์การดำเนินงาน:

(*this)[2]
(*this)(foo, bar)
*this / 3
*this * (that - 3) + 5

มันเป็นเพียงการยกเลิกการอ้างอิงตัวชี้

คุณยังสามารถใช้ชื่อของพวกเขาได้:

this->operator[](2)
this->operator() (foo, bar)
this->operator/ (3)
this->operator*(that - 3) + 5
person Sebastian Mach    schedule 13.05.2013

หากคุณไม่ได้ใช้โอเปอเรเตอร์ภายนอก ควรใช้งานได้ดังนี้ : this->operator[](args)

person Jiwan    schedule 13.05.2013

มีไวยากรณ์พิเศษสำหรับพอยน์เตอร์ ดูเหมือนว่า:

this->oprator[](0)

this->operator+(*this)

person 0x26res    schedule 13.05.2013