電子書籍の厳選無料作品が豊富!

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

private:
 const char *kMessage_;

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

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

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

よろしくお願いします。

A 回答 (1件)

コンストラクタの引数リストの後ろの:は,


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

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

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

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

お礼日時:2011/06/12 18:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!