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

ความแตกต่างระหว่าง Dot (.) Operator และ Arrow (->) ใน C++


บทนำ

Dot (.) และ Arrow (->) ใช้เข้าถึงสมาชิกของ class/struct/union (ของ class type) แต่ใช้ในสถานการณ์ต่างกัน

กฎการใช้งาน

  • a.b: ใช้เมื่อ b เป็นสมาชิกของ object (หรือ reference) a โดย a ต้องเป็น object จริง (หรือ reference) ของคลาส
  • a->b: shorthand ของ (*a).b ใช้เมื่อ a เป็น pointer ไปยัง object เข้าถึงสมาชิก b ของ object ที่ a ชี้

Overloadability

  • . ไม่สามารถ overload ได้
  • -> สามารถ overload ได้ (operator->()) ใช้ใน smart pointers, iterators

ตัวอย่าง

#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;
}

ผลลัพธ์

a.b = 5
x->b = 5

ทั้งสองเข้าถึง member เหมือนกัน แต่ a เป็น object, x เป็น pointer

หมายเหตุ: เนื้อหานี้ซ้ำกับ ID 1004083517 และ 1004083518