int& fun()
{
int * temp = NULL;
return *temp;
}
Trong phương pháp trên, tôi đang cố thực hiện dereferencing của con trỏ NULL. Khi tôi gọi hàm này, nó không đưa ra ngoại lệ. Tôi tìm thấy khi trở về loại là bằng cách tham khảo nó không đưa ra ngoại lệ nếu nó là theo giá trị sau đó nó. Ngay cả khi dereferencing của con trỏ NULL được assinged để tham khảo (như dòng dưới đây) sau đó cũng nó không cung cấp cho.Chỉ định tham chiếu theo dereferencing con trỏ NULL
int* temp = NULL:
int& temp1 = *temp;
Câu hỏi của tôi là trình biên dịch không thực hiện dereferencing trong trường hợp tham chiếu?
Tài liệu tham khảo được xử lý như con trỏ trong nội bộ chúng khác nhau về cú pháp bạn sử dụng trên chúng. Biết rằng dereferenciation của bạn chỉ "gán" pointervalue để tham chiếu làm cho nó một tham chiếu đến NULL. Điều đó không kích hoạt bất kỳ acces bộ nhớ. Khi bạn quay trở lại theo giá trị, việc dereferenciation sẽ dẫn đến truy cập bộ nhớ ở 0, hầu như luôn mang đến cho bạn một segfault. – Nobody
Kiểm tra bài viết này, giải thích tại sao con trỏ NULL là một tính năng khủng khiếp trong OOP và nên tránh bằng mọi giá: http://www.yegor256.com/2014/05/13/why-null-is-bad.html – yegor256