ฉันมีคำถามเกี่ยวกับโอเปอเรเตอร์ สมมติว่าฉันมีคลาส myclass และฉันมีโอเปอเรเตอร์มากเกินไป *=, [] และ +
ฉันสามารถเข้าถึงได้ภายในฟังก์ชั่นสมาชิกด้วย this->*=, this->[], *this + * this... ?
ฉันมีคำถามเกี่ยวกับโอเปอเรเตอร์ สมมติว่าฉันมีคลาส myclass และฉันมีโอเปอเรเตอร์มากเกินไป *=, [] และ +
ฉันสามารถเข้าถึงได้ภายในฟังก์ชั่นสมาชิกด้วย this->*=, this->[], *this + * this... ?
ใช่ คุณสามารถเข้าถึงได้หลายวิธี ตัวอย่างเช่น คุณสามารถทำสิ่งนี้:
*this + something
หรืออีกทางหนึ่ง:
this->operator+(something)
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
หากคุณไม่ได้ใช้โอเปอเรเตอร์ภายนอก ควรใช้งานได้ดังนี้ : this->operator[](args)
มีไวยากรณ์พิเศษสำหรับพอยน์เตอร์ ดูเหมือนว่า:
this->oprator[](0)
this->operator+(*this)