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){
}

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.

1 Like

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 :smiley:

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

  • số tham số vào khác nhau
  • kiêu các tham số khác nhau
  • thứ tự các tham số khác nhau

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 :stuck_out_tongue:

1+2 vẫn được chứ bạn :smiley:

mình thử trên visual studio 2013 k được

Copy vào xem sao: https://ideone.com/fvST4M

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?