• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++のoperator関数でのキャストする場合の書き方がまだよく理解)

C++のoperator関数でのキャストする場合の書き方がまだよく理解

このQ&Aのポイント
  • C++のoperator関数でのキャストする場合の書き方がまだよく理解できていません。
  • operator char *()はAutoPtrをchar *にキャストするために使われているらしいですが、なぜこの書き方でキャストできるか分かりません。
  • また、2番目のoperator関数の記述「operator char *()」はどこまでが型で、どこからが関数の定義と見なせばよいのでしょうか?

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

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

> 何故この書き方でAutoPtrをchar *型にキャストできるのかがいまいち分かりません。 strcpy() の第一引数の型は char* です。なのでコンパイラは strcpy() に渡された第一引数workすなわちAutoPtrをchar*に(暗黙的に)変換できる方法を探し、その結果AutoPtrのメソッドoperator char*()を適用します。 > また、2番目のoperator関数の記述「operator char *()」はどこまでが型で、どこからが関数の定義と見なせばよいのでしょうか? operator X() は X が型、operator X が関数名です。 したがって operator char*() は char* を返す関数:operator char* となります。

tmiyoshi
質問者

お礼

御教示ありがとうございました。 C++のコンパイラーのoperator関数の解釈の仕方にも関係しているのですね。 通常のC/C++で使われているキャストの使い方と違っていたので違和感がありました。 上記説明で納得できました。

関連するQ&A