• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++で>>演算子のオーバーロード)

C++で>>演算子のオーバーロードについて

このQ&Aのポイント
  • C++学習者が現在Stringクラスを作成し、演算子のオーバーロードを定義しているが、友達関数として定義されている入力演算子(>>)の一部が理解できない
  • 友達関数として定義された入力演算子(>>)について、なぜ単なる文字列をStringクラスのオブジェクトに代入できるのか疑問がある
  • 代入演算子(=)のオーバーロード関数においても、単なる文字列をStringクラスのオブジェクトに代入できないように見える

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>わからないのは s = temp; の部分です。 「暗黙の型変換」が行われています。 代入の直前の時点で「暗黙的な無名」のStringオブジェクトのインスタンスが生成されます。 生成時、コンストラクタには「char *temp」が渡され、暗黙的な無名のStringオブジェクトの内容は「tempが指す文字列」になります。 次に「tempと同じ内容を持つ、無名のStringオブジェクトの値が、Stringオブジェクトのsに代入される」のです。 そして、代入が終わると「無名のStringオブジェクト」が自動的に破棄されます。

papashiroSooke
質問者

お礼

早速に回答を頂き、有難うございます。 「暗黙的な無名」のオブジェクトはまだ知りませんでした。 教本が進むと出てくるのかもしれません。 納得のいく説明、本当に有難うございました。

関連するQ&A

専門家に質問してみよう