- 締切済み
C++のクラス内のchar *strについて
初歩的な質問で申し訳ありませんが、いまC++を勉強していてわからないところがあったので質問させていただきます。以前C言語を少ししていたのでアスタリスクがポインタのことを指しているというのはわかるのですがC++でクラスを扱うとなったときなぜクラス内でconst char *strと変数の前にアスタリスクがつくのかがわかりません。ためしにアスタリスクを外してコンパイルすると4つくらいエラーが出てきて読み取り専用メンバへの代入とかchar* から char への不正(?)な変換とか出てくるのですが肝心のアスタリスクをつける意味が結局わかりませんでした。なので誰か教えてください。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- wormhole
- ベストアンサー率28% (1626/5665)
>なぜポインタでないとコンパイルが通らないかということがわからず気持ちが悪かったので質問させていただきました。 「ポインタを使うように書いてるから」としか答えようがないです。 仮に const char *s = "a"; をポインタが必要な理由がわからないからと const char s = "a"; としてコンパイルできると思いますか?
- kmee
- ベストアンサー率55% (1857/3366)
Cでも、構造体のメンバーにポインタ使うことありますよね? その例だっておなじで、ポインタを使いたいからポインタにしてあるだけでしょう。 なお、 const charは変更不可のchar型整数 const char *は、「const char」へのポインタ(変更可能) とまったく違いますから、アスタリスクを取ったら全く意味が変わって、エラーなるのも当たり前のことです
- OKWavex
- ベストアンサー率22% (1222/5383)
>アスタリスクをつける意味が結局わかりませんでした。 アスタリスクをつける意味はポインタ(アドレス参照変数) ポインタ定義でのデータ処理が必要な関数・コーディングだからその定義が要求されるのでしょー
- wormhole
- ベストアンサー率28% (1626/5665)
クラス内だろうが外だろうがポインタはポインタですけど?
補足
自分の質問がわかりずらくて大変申し訳ありません。聞きたいのはなぜクラスの中であえてポインタで宣言するかということです。実際ポインタじゃなかったコンパイルエラーになるのでするしかないんですが・・・なぜポインタでないとコンパイルが通らないかということがわからず気持ちが悪かったので質問させていただきました。