C++のポインタのconstと参照について

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*&に変換してくれてもいいんじゃないかと思う。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です