Quá tải hàm có thể xảy ra giữa hai hàm thành viên có cùng số tham số, nếu một trong số chúng được khai báo là const.quá tải hàm với tham số const
Nhưng điều gì sẽ xảy ra nếu một hàm có đối số const, một hàm khác có đối số không phải của cùng một loại? Nó có hoạt động với các tham chiếu và con trỏ không? Nếu C++ cung cấp nó, tại sao nó cung cấp? Hãy chia sẻ lý do với tôi nếu bạn biết.
Dưới đây là ví dụ giúp bạn hiểu được tình huống trên.
void fun(const int i)
{
cout << "fun(const int) called ";
}
void fun(int i)
{
cout << "fun(int) called " ;
}
int main()
{
const int i = 10;
fun(i);
return 0;
}
Output: Lỗi trình biên dịch: redefinition of 'void fun(int)'
void fun(char *a)
{
cout<<"non-const fun() called";
}
void fun(const char *a)
{
cout<<"const fun() called";
}
int main()
{
const char *ptr = "GeeksforGeeks";
fun(ptr);
return 0;
}
Output: fun const() được gọi
Tại sao thứ hai cho phép trong C++?
Hãy thử với 'void fun (char * const a)' – PiotrNycz
Có cái gì đó vẫn còn thiếu trong câu trả lời của tôi không? Nếu có, hãy cho tôi biết, vì vậy tôi có thể cải thiện nó. :) Nếu không, tôi có thể đề nghị chấp nhận nó không? – Xeo