Tôi hiện đang học C++ từ C++ Primer, và nó giải thích cách tham chiếu là bí danh cho một tên biến khác. Nó cũng giải thích cách con trỏ trỏ đến biến khác. Nó nói rằng sự khác biệt giữa một con trỏ và một tham chiếu là các con trỏ có thể được gán lại và các tham chiếu không thể.Sự khác biệt chức năng giữa một con trỏ const (không phải là con trỏ đến const) và tham chiếu là gì?
Trong ví dụ mã sau, tôi có thể làm gì với con trỏ hoặc tham chiếu mà tôi không thể làm với người khác?
double pi = 3.14;
double &piRef = pi;
double *const piPnt = π
//both of these examples are valid and do the same thing
piRef = 3.14159;
*piPnt = 3.14159;
//however, if I attempt to reassign what the pointer points to, it is illegal.
//this is the same as with a reference, as a reference can't be reassigned either
double tau = 6.28;
piPnt = τ
Tôi biết sự khác biệt nội bộ của mỗi (chẳng hạn như con trỏ là đối tượng, tham chiếu không phải là). Tôi quan tâm đến cách những khác biệt đó quan trọng với lập trình viên ngoài một cú pháp hơi khác một chút. Do đó, đây không phải là bản sao của câu hỏi this trong đó câu trả lời được chấp nhận chỉ nói về những khác biệt nội bộ.
@juanchopanza Con trỏ trong ví dụ của tôi là một con trỏ const, do đó nó không thể được gán lại. – john01dav
Nhưng bạn có thể sử dụng nhiệm vụ trên tham chiếu. Chỉ cần nhớ nó là một bí danh cho một cái gì đó khác. – juanchopanza
@juanchopanza Tôi có thể gán lại giá trị con trỏ trỏ tới. Ví dụ, cả hai 'piRef = 3.14159' và' * piPnt = 3.14169' sẽ là hợp lệ. Một con trỏ có thể là const mà không trỏ đến một đối tượng const. – john01dav