Như đã nêu, các quy tắc được mô tả đầy đủ trong tiêu chuẩn. Như một quy tắc cơ bản của ngón tay cái, trình biên dịch sẽ chọn quá tải yêu cầu chuyển đổi tự động ít nhất, với báo trước rằng nó sẽ không bao giờ áp dụng 2 chuyển đổi do người dùng xác định.
Loại số nguyên được tự động truyền xung quanh rất nhiều. Vì vậy, nếu bạn có một hàm bị quá tải trên một số int
và double
, thì trình biên dịch sẽ chọn hàm int
nếu được gọi với hằng số là số nguyên. Nếu bạn không có phiên bản int
, trình biên dịch sẽ chọn double
. Và trong số các loại số nguyên khác nhau, trình biên dịch thích int
cho các hằng số nguyên, vì đó là kiểu của chúng. Nếu bạn quá tải trên short
và unsigned short
, nhưng được gọi với hằng số 5
, trình biên dịch sẽ phàn nàn rằng nó không thể tìm ra tình trạng quá tải để sử dụng.
Sách của Scott Meyers thực sự có giải thích tốt nhất mà tôi từng đọc.
Bạn có nghĩa là ghi đè không? – MGZero
Các quy tắc rất nhiều ... và phức tạp. Tất cả điều này được đề cập trong phần ** 3.4 ** của tiêu chuẩn C++ –
@MGZero - không ... – Belgi