Đây là hai tờ khai chức năng tương đương:
int& a; // & associated with type
int &a; // & associated with variable
Liên kết các &
hoặc *
với tên loại phản ánh mong muốn của các lập trình viên có một loại con trỏ riêng biệt. Tuy nhiên, khó khăn khi liên kết &
hoặc *
với tên loại chứ không phải biến là, theo cú pháp chính thức C++
, không phải &
cũng không phải là *
được phân phối trên danh sách các biến. Do đó, dễ dàng tạo ra các khai báo gây hiểu nhầm. Ví dụ, khai báo sau tạo ra một, không phải là hai tham chiếu số nguyên.
int& a, b;
Ở đây, b
được khai báo là một số nguyên (không phải là một tài liệu tham khảo số nguyên) bởi vì, khi được sử dụng trong một tuyên bố, các &
(hoặc *
) được liên kết với các cá nhân biến rằng nó đi trước, không để các loại nó theo sau. Vấn đề với tuyên bố này là, trực quan cả a và b dường như là kiểu tham chiếu, mặc dù chỉ a
là một tham chiếu, do đó, sự nhầm lẫn thị giác không chỉ gây hiểu lầm cho những người lập trình mới, mà đôi khi cũng là lập trình viên giàu kinh nghiệm.
Việc bạn viết int &a
hoặc int& a
cho trình biên dịch C++
không quan trọng. Tuy nhiên, để tránh nhầm lẫn, &
và *
phải được liên kết với biến thay vì loại.
Nguồn
2017-04-18 16:15:53
không có sự khác biệt nào. – Nerdtron