Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตัวดำเนินการลูกศร `->` ใน C ++ คืออะไร


ตัวดำเนินการ dot และ arrow ใช้ใน C ++ เพื่อเข้าถึงสมาชิกของคลาสหรือโครงสร้าง ซึ่งใช้ในสถานการณ์ที่แตกต่างกันเท่านั้น ใน C ++ ประเภทที่ประกาศเป็นคลาส struct หรือยูเนี่ยนถือเป็น "ประเภทคลาส" ต่อไปนี้จึงหมายถึงทั้งสามคน

  • a.b ใช้เฉพาะเมื่อ b เป็นสมาชิกของวัตถุ (หรืออ้างอิงถึงวัตถุ) ดังนั้นสำหรับ a.b เจตนาจะเป็นวัตถุจริง (หรือการอ้างอิงถึงวัตถุ) ของคลาสเสมอ

  • a->b เป็นสัญกรณ์ชวเลขสำหรับ (*a).b เช่น ถ้า a เป็นตัวชี้ไปยังวัตถุ จากนั้น a->bis เข้าถึงคุณสมบัติ b ของวัตถุที่ชี้ไป

โปรดทราบว่าจุดไม่สามารถโอเวอร์โหลดได้ แต่ -> สามารถโอเวอร์โหลดได้ ดังนั้นเราสามารถกำหนด ownfunction(operator->()) ของเราที่ควรจะเรียกเมื่อใช้โอเปอเรเตอร์นี้ ดังนั้น ถ้า a เป็นอ็อบเจ็กต์ของคลาสที่โอเวอร์โหลดโอเปอเรเตอร์ -> (ประเภททั่วไปคือตัวชี้อัจฉริยะและตัววนซ้ำ) ความหมายก็คือสิ่งที่ผู้ออกแบบคลาสนำไปใช้

การอ้างอิงมีความหมายแทนวัตถุดังนั้นฉันควรเพิ่ม "หรืออ้างอิงไปยังตัวชี้" ด้วยเช่นกัน อย่างไรก็ตาม ฉันคิดว่าสิ่งนี้จะทำให้เกิดความสับสนมากกว่ามีประโยชน์ เนื่องจากแทบไม่มีการใช้การอ้างอิงถึงตัวชี้ (T*&)

โค้ดตัวอย่าง

#include<iostream>
class A {
   public: int b;
   A() { b = 5; }
};
int main() {
   A a = A();
   A* x = &a;
   std::cout << "a.b = " << a.b << "\n";
   std::cout << "x->b = " << x->b << "\n";
   return 0;
}

ผลลัพธ์

5
5