Tiêu chuẩn C++ 11 nói
5,10 khai thác bình đẳng
Pointers cùng loại (sau khi chuyển đổi con trỏ) có thể được so sánh cho sự bình đẳng. Hai con trỏ của cùng một loại so sánh bằng nhau nếu và chỉ khi chúng đều là null, cả hai đều trỏ đến cùng một hàm, hoặc cả hai đều đại diện cho cùng một địa chỉ (3.9.2).
Nếu bạn không có bất kỳ gợi ý nào về chức năng, họ chỉ có thể có cùng một địa chỉ, nhưng chúng tôi sẽ không biết. Nếu bạn là so sánh con trỏ với hai hàm khác nhau, chúng không được so sánh bằng nhau.
Một nguyên nhân cho sự nhầm lẫn có thể là các trình biên dịch MSVC được biết là kết hợp mã cho chức năng mẫu điều đó xảy ra để sản xuất mã máy giống hệt với nhiều loại khác nhau (như int
và long
). Điều này không tuân thủ.
Tuy nhiên, đây là chức năng với khác nhau chữ ký và không chính xác câu hỏi này là gì.
Nguồn
2012-08-28 20:52:19
Nhận xét cuối cùng không có ý nghĩa ngay bây giờ. Đối với các loại đối số khác nhau, bạn có các con trỏ hàm khác nhau, vì vậy quy tắc về "Hai con trỏ [hàm] cùng loại" không còn áp dụng nữa. – MSalters
Đó là sự thật. Đó là nhiều hơn về một trường hợp mà chúng tôi đã thấy rằng các chức năng khác nhau * có thể * nhận được cùng một địa chỉ, nhưng không thực sự là câu hỏi được hỏi, –