Khi bạn nên sử dụng mỗi:
tham khảo: Sử dụng các theo mặc định. Nó là rất phổ biến cho mọi người để dereference NULL con trỏ. Bạn loại bỏ nguy cơ đó bằng một tham chiếu.
const pointer: Khi bạn muốn tham chiếu nhưng không thể tạo một tham chiếu. Ví dụ, bạn đang viết một trình điều khiển, và bạn muốn một con trỏ đến đầu của một bản đồ bộ nhớ.Một tham chiếu không có ý nghĩa nhiều trong trường hợp đó. Ngoài ra, nếu bạn cần một mảng của sự vật, một tham chiếu sẽ không hoạt động (mặc dù một mảng các lớp đơn giản với các thành viên tham khảo sẽ).
Trong ví dụ sau, một con trỏ const kiểm tra một lỗi mà một tài liệu tham khảo không thể kiểm tra:
int addFour(int* register){
if(isNull(arg)){
throw NullPointerException();
}
// some stuff
*register += 4;
return register;
}
// This could be any function that does pointer math.
bool isNull(const int* ptr){
return(NULL == ptr);
}
Ngoài ra, tham chiếu là một _alias_ cho một đối tượng. Điều này có nghĩa rằng một tham chiếu có thể được sử dụng mà không có dereferencing (tha thứ cho thuật ngữ khó hiểu). –