01/10/2018, 08:35
Trong các hàm sau đây,cặp hàm nào được coi là overload @@ xin hỏi ý kiến mọi người
void hn(int p,int z){
}
void hn(int *p,int *z){
}
void hn(int &p,int &z){
}
Bài liên quan
mình nghĩ là k có cái nào gọi là overload hết! những cái này bạn chỉ cần gõ ra trên visual là tự có kq thôi, nếu k có lỗi thì là overload, ngược lại!
Dự là 1+2, 2+3 thôi.
Cái món & này cũng là first-class “object” nhưng mà gán xong là như bt ngay.
uh cảm ơn bạn ^^, mình cũng thử trước đó rồi, mình thấy gõ cả 3 kiểu hàm đều chạy được nên ms ko biết :)) trong khi đây là một câu trắc nghiệm trong bài thi của mình ấy T^T nên mình phân vân lắm
cảm ơn bạn nhé.
mình cũng nghĩ như vậy :)) mà chả có cách nào chứng minh được cả.
Một translation unit có cả 3 prototype vẫn biên dịch? Giờ bạn thêm code vào rồi gọi thử xem
Theo mình
gọi là chồng hàm khi
tên các hàm giống nhau
và đáp ứng 1 hoặc cả 3 đk
như trên thì cùng cả kiểu cùng cả thứ tự, cùng cả số lương
hình như nó phân biệt qua tham chiếu và tham biến
như 3 hàm trên thì chỉ có 2 hàm
void hn(int *p,int *z){
}
void hn(int &p,int &z){
}
là nạp chồng
( ide vs 2013)
và phân biệt các hàm này bằng cách
lời gọi các hàm nếu gọi tên các biến thì sẽ gọi hàm tham chiếu
int a = 0, b = 0;
hn(a,b);
call
void hn(int &p,int &z){ }
còn nếu đưa vào địa chỉa của a, b thì sẽ gọi hàm tham biến
int a = 0, b = 0;
hn(&a,&b);
call
void hn(int *p,int *z){ }
cái này là hình thử trên ide, mình cũng chưa gặp trường hợp này
và kiểm tra thì kiểm tra được, nhưng k giải thích tân tường được
1+2 vẫn được chứ bạn
mình thử trên visual studio 2013 k được
Copy vào xem sao: https://ideone.com/fvST4M