void func1(const char* str){} void func2(char*& str){} void func3(const char*& str){} int main(){ char* hoge=NULL; const char* mosa=NULL; func1(hoge); // 例1 func1(mosa); // 例2 func2(hoge); // 例3 func2(mosa); // 例4 func3(hoge); // 例5 func3(mosa); // 例6 return 0; }
とすると、
例1は成功。
例2は成功。
例3は成功。
例4は失敗。const char* をchar*&に変換できなくて。
例5は失敗。char*をconst char*&に変換できなくて。
例6は成功。
つまり、char*をconst char*に変換するのは自動的にやってくれる。
char*をchar*&なら自動的に変換してくれる。
const char*をconst char*&なら自動的に変換してくれる。
const char*をchar*&には変換できない。
char *をconst char*&には変換できない。
まとめると、
char*をconst char*に変換してくれるなら、char*をconst char*&に変換してくれてもいいんじゃないかと思う。