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

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


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

  • a.b จะใช้ก็ต่อเมื่อ b เป็นสมาชิกของอ็อบเจกต์ (หรืออ้างอิง[1] ไปยังอ็อบเจกต์) ดังนั้นสำหรับ a.b แล้ว a จะเป็นวัตถุจริง (หรือการอ้างอิงถึงวัตถุ) ของคลาสเสมอ
  • a →b เป็นสัญกรณ์ชวเลขสำหรับ (*a).b เช่น ถ้า a เป็นตัวชี้ไปยังอ็อบเจ็กต์ a→b กำลังเข้าถึงคุณสมบัติ b ของอ็อบเจ็กต์ที่ชี้ไป

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


[1] การอ้างอิงมีความหมายแทนวัตถุ ดังนั้นฉันจึงควรเพิ่ม "หรือการอ้างอิงไปยังตัวชี้" ใน #3 ด้วยเช่นกัน อย่างไรก็ตาม ฉันคิดว่าสิ่งนี้จะทำให้เกิดความสับสนมากกว่ามีประโยชน์ เนื่องจากแทบจะไม่เคยใช้การอ้างอิงถึงตัวชี้ (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