Thắc mắc về độ ưư tiên toán tử giữa (Member access .) và (Indirection *)

Em thử viết 1 chương trình như sau:

#include <iostream>

using namespace std;

struct T
{
    int k;
};

int main()
{
    T *a = new T;
    cin >> *a.k; // Sai

    //cin >> (*a).k; // Đúng

    delete a;
    return 0;
}

Em chạy dòng cin >> *a.k; thì bị lỗi, theo em hiểu thì . có độ ưu tiên cao hơn *.
Nhưng đọc ở https://cpp.daynhauhoc.com/1/10-do-uu-tien-cua-cac-toan-tu/
thì em thấy (Indirection *) ở group 3 có độ ưu tiên cao hơn (Pointer to member .) ở group 4

M.n giải thích cho em với ạ? Tks

Em xin lỗi do không đọc kỹ ạ.
Hoá ra cái em dùng ở trên là (member access .) chứ không phải là (Pointer to member .*)
Nên link trên hoàn toàn đúng ạ.

1 Like

Cách nhớ là nếu chỉ cần *a.k là được thì không cần toán tử ->.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?