関数のオーバーロードは、パラメーターの1つがconstとして宣言されている場合、同じ数のパラメーターを持つ2つのメンバー関数間で発生する可能性があります。
しかし、ある関数にconst引数があり、別の関数に同じ型のnon-const引数がある場合はどうなるでしょうか。参照とポインターに対して機能しますか?C ++がそれを提供する場合、なぜそれが提供するのですか?ご存知の方は理由を教えてください。
以下は、上記のシナリオを理解するのに役立つ例です。
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;
}
出力:コンパイラエラー: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;
}
出力:const fun()と呼ばれる
2番目のものがC++で許可されているのはなぜですか?