Q&A
解決済
2回答
9771閲覧
総合スコア76
C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。
0グッド
1クリップ
投稿2016/01/22 01:22
0
1
よく参考書のサンプルプログラムの中で、クラス定義上で、char* str と宣言しているのを良く見ます。なぜstd::stringを使わないのでしょうか。その場合、ポインタとかメモリとかの問題で悩まされることも減ると思うのですが、なぜchar* strと宣言するのでしょうか。 それぞれのメリット・デメリットがあれば教えてください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
質問へのコメント
回答2件
ベストアンサー
そうですね。
参考書でしたら、文字列データの概念や文字列に関するメモリの扱い方を説明したい為に、あえてchar*を利用しているのかもしれません。C++を利用していくからには、メモリに関する知識は切り離せませんからね。
実務で std::string、CString (MFC)、NSString などを積極的に使っていくことは、文字列データであることを明示するためや、メモリ管理に関するバグを減らすためにも効果的でしょうね。 OS等のAPIでは、文字列(構造体のメンバーを含む)に関する引数の型が char * であることが殆どなため、char *を常用するようになってしまっているのかな、とも思えます。 毎度 std::string 相互に変換しあうまでもないから...と。
投稿2016/01/22 02:02
総合スコア728
回答へのコメント
2016/01/22 02:05
c++ std::string スマートポインタ
メモリ管理は大事です。 スマートポインタや参照カウント付きポインタに慣れる前に自前で確保したものは必ずデストラクタやメソッド出口で解放する、習慣を身につけておくことで、一層スマートポインタが便利に扱えるようになると思います。
投稿2016/01/22 01:33
総合スコア1693
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
C++ ; char* と std::string の違い
2016/01/22 02:05