みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

c++の「:」の意味

--------------------------------------------------
class Hoge {
public:
 Hoge(const char* msg)
  :kMessage_(msg), kCount_(100000000), kInterval_(1000000)
  {}

private:
 const char *kMessage_;

--------------------------------------------------
c++の勉強をしています。
いろいろ検索して調べていると、こんな感じのコードに出会いました。
「:」の部分の意味を教えていただきたいです。★

googleで検索しようとしたのですが、「:」をうまく使えず見つけれなかったので、
検索の仕方か説明サイトも教えていただけると助かります。

雰囲気的に、constな定数変数を引数で設定したいときに、
メンバ変数名と同じ名前のsetterが暗黙に定義される的な感じだと思うのですがはっきりしたいです。

よろしくお願いします。

投稿日時 - 2011-06-12 14:55:27

QNo.6804188

暇なときに回答ください

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

コンストラクタの引数リストの後ろの:は,
・基底クラス
・メンバ変数
を初期化するためのものです。
コンストラクタの複文部分では初期化できないので,このような構文が用意されています。

ちなみに,複文中での表記になりますが,
const char * p = "abc";
std::string s("abc");
は初期化で,
const char * p;
p = "abc";
std::string s;
s = "abc";
は,pは代入,sは初期化+代入になります。
個人的には可能な限り初期化すべきだと思います。
# 初期化+代入は初期化のみに比べて通常無意味な無駄が多いので。

投稿日時 - 2011-06-12 15:35:21

お礼

レスありがとうございます。

初期化というのですね。
教えていただいたことで、説明サイトも検索できました。
わかりやすい説明ありがとうございます。

投稿日時 - 2011-06-12 18:13:44

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問