Toán tử chấm và mũi tên đều dùng trong C++ để truy cập thành viên lớp. Chỉ dùng trong tình huống khác nhau. Trong C++, kiểu khai báo class, struct, union coi là "kiểu lớp".
a.bchỉ dùng nếublà thành viên của đối tượng (hoặc tham chiếu đến đối tượng)a. Vớia.b,aluôn là đối tượng thực tế (hoặc tham chiếu) của lớp.a->blà ký hiệu tắt cho(*a).b, tức nếualà con trỏ đến đối tượng, thìa->btruy cập thuộc tínhbcủa đối tượng được trỏ tới.
Lưu ý . không nạp chồng được. -> có thể nạp chồng, ta định nghĩa operator->() được gọi khi dùng toán tử này. Nếu a là đối tượng lớp nạp chồng operator-> (kiểu phổ biến: smart pointers, iterators), ý nghĩa do người thiết kế lớp quyết định.
Ví dụ
#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;
}
Kết quả
5 5