• 締切済み

C++のクラス内のchar *strについて

初歩的な質問で申し訳ありませんが、いまC++を勉強していてわからないところがあったので質問させていただきます。以前C言語を少ししていたのでアスタリスクがポインタのことを指しているというのはわかるのですがC++でクラスを扱うとなったときなぜクラス内でconst char *strと変数の前にアスタリスクがつくのかがわかりません。ためしにアスタリスクを外してコンパイルすると4つくらいエラーが出てきて読み取り専用メンバへの代入とかchar* から char への不正(?)な変換とか出てくるのですが肝心のアスタリスクをつける意味が結局わかりませんでした。なので誰か教えてください。

みんなの回答

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.4

>なぜポインタでないとコンパイルが通らないかということがわからず気持ちが悪かったので質問させていただきました。 「ポインタを使うように書いてるから」としか答えようがないです。 仮に const char *s = "a"; をポインタが必要な理由がわからないからと const char s = "a"; としてコンパイルできると思いますか?

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

Cでも、構造体のメンバーにポインタ使うことありますよね? その例だっておなじで、ポインタを使いたいからポインタにしてあるだけでしょう。 なお、 const charは変更不可のchar型整数 const char *は、「const char」へのポインタ(変更可能) とまったく違いますから、アスタリスクを取ったら全く意味が変わって、エラーなるのも当たり前のことです

  • OKWavex
  • ベストアンサー率22% (1222/5383)
回答No.2

>アスタリスクをつける意味が結局わかりませんでした。 アスタリスクをつける意味はポインタ(アドレス参照変数) ポインタ定義でのデータ処理が必要な関数・コーディングだからその定義が要求されるのでしょー

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

クラス内だろうが外だろうがポインタはポインタですけど?

naoya7083
質問者

補足

自分の質問がわかりずらくて大変申し訳ありません。聞きたいのはなぜクラスの中であえてポインタで宣言するかということです。実際ポインタじゃなかったコンパイルエラーになるのでするしかないんですが・・・なぜポインタでないとコンパイルが通らないかということがわからず気持ちが悪かったので質問させていただきました。

関連するQ&A