7.3.14 Toán tử con trỏ

Toán tử con trỏ – Pointer operators

Toán tử & *
Có thể được thực hiện như là một hàm toàn cục không ?
Có thể được thực hiện như là một hàm thành việc của lớp không ?
Kiểu dữ liệu trả về Bất kỳ kiểu gì

Mặc dù có nhiều sự khác nhau, hai toán tử này được nhóm lại với nhau do ngữ cảnh sử dụng tương tự nhau. Chúng được sử dụng để tạo ra các con trỏ giả (pseudo-pointers) hoặc các con trỏ thông minh (smart pointers). Các giá trị của pseudo-pointers có thể thuộc bất kỳ kiểu dữ liệu nào (ví dụ: chúng có thể là chuỗi được sử dụng làm key trong cơ sở dữ liệu) nhưng đừng quên rằng tưởng tượng của bạn phải phù hợp với những hạn chế và ràng buộc về logic. Tốt nhất là nên đảm bảo rằng P luôn luôn bằng *&P.

Chương trình này →

cho thấy một ví dụ về việc sử dụng các toán tử này.

Phân tích cách chúng ta sử dụng chuỗi như là các pseudo-pointers. Toán tử nạp chồng ‘&’ bên trong lớp P tạo ra một “con trỏ” mới, đại diện cho một string với giá trị được lựa chọn theo giá trị của trường no, trong khi toán tử ‘*’ tạo ra một đối tượng mới dựa trên giá trị được dereferenced từ string.

Chương trình in ra dòng sau:

‘charlie’ -> 2