Tôi đã đọc ở khắp mọi nơi rằng một tài liệu tham khảo phải được khởi tạo sau đó và ở đó và không thể được tái khởi tạo lại.Chúng tôi có thể chỉ định lại tham chiếu trong C++ không?
Để kiểm tra hiểu biết của mình, tôi đã viết chương trình nhỏ sau đây. Có vẻ như tôi đã thực sự thành công trong việc chỉ định lại một tham chiếu. Ai đó có thể giải thích cho tôi những gì đang thực sự xảy ra trong chương trình của tôi không?
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
int main()
{
int i = 5, j = 9;
int &ri = i;
cout << " ri is : " << ri <<"\n";
i = 10;
cout << " ri is : " << ri << "\n";
ri = j; // >>> Is this not reassigning the reference? <<<
cout << " ri is : " << ri <<"\n";
getch();
return 0;
}
mã biên dịch tốt và đầu ra là như tôi mong đợi:
ri is : 5
ri is : 10
ri is : 9
Tại sao 'const int & cri = i' không được phép? Bạn không thể viết dòng nào? Nguyên nhân cho tôi trình biên dịch cho phép chèn dòng như vậy ở bất kỳ nơi nào. Ngoài ra, đó là một câu trả lời rõ ràng và ngắn gọn! – mercury0114
Tôi đã không nói rằng không được phép - như bạn quan sát, tham gia một const ref cho một biến không const là tốt. Tôi đã nói nó sẽ không cho phép bạn gán cho điều đó, nghĩa là bạn không thể thay đổi biến ban đầu thông qua một tham số const, như OP đã làm với 'ri'. – Useless
Ồ đúng rồi, giờ tôi thấy ý của bạn là gì. – mercury0114