Nếu tôi không thực sự truy cập vào "đối tượng" bị bỏ rơi, đó là dereferencing con trỏ null vẫn chưa được xác định?Tại điểm nào dereferencing con trỏ null trở thành hành vi không xác định?
int* p = 0;
int& r = *p; // undefined?
int* q = &*p; // undefined?
Ví dụ thực tế hơn một chút: tôi có thể coi trọng con trỏ rỗng để phân biệt giữa quá tải không?
void foo(Bar&);
void foo(Baz&);
foo(*(Bar*)0); // undefined?
Được rồi, các ví dụ tham khảo là hành vi chắc chắn không xác định theo tiêu chuẩn:
một tham chiếu null không thể tồn tại trong một chương trình được xác định rõ, bởi vì cách duy nhất để tạo ra như một tài liệu tham khảo sẽ được ràng buộc nó vào "đối tượng" thu được bởi dereferencing một con trỏ null, gây ra hành vi không xác định.
Thật không may, phần được nhấn mạnh là mơ hồ. Có phải phần ràng buộc gây ra hành vi không xác định hoặc là phần hội nghị dereferencing đủ?
[Câu hỏi này bao gồm thông tin bạn muốn.] (Http://stackoverflow.com/questions/2474018/when-does-invoking-a-member-function-on-a-null-instance-result-in- undefined-behav) – GManNickG
Đây phải là một bản dupe chính xác. Tôi biết chúng tôi đã thảo luận về điều này. –