関数のオーバーロードは、同じ数のパラメータを持つ2つのメンバ関数の間で起こります。その1つがconstとして宣言されている場合です。constパラメータによる関数のオーバーロード
しかし、1つの関数にconst引数があり、別の関数が同じ型の非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;
}
出力:秒1はCで許可されているのはなぜconstの楽しさは、()
と呼ば++?
「void fun(char * const a)」を試してください – PiotrNycz
私の答えにはまだ何かがありませんか?はいの場合は、私に教えてください、私はそれを改善することができます。 :)そうでなければ、私はそれを受け入れることを提案してもよいでしょうか? – Xeo