idojun
@idojun
@takmin @naokiring がおっしゃるように,初期化子を使わないと1度デフォルトコンストラクタが実行されるので,代入のコストが無駄ですし.あ,デフォルトコンストラクタがないメンバの場合も初期化子必須ですね.
2011-04-28 21:56:09
藤本直明/FUJIMOTO Naoaki
@naokiring
@idojun @takmin あと、コンストラクタ初期化子内で例外が発生した場合(mallocに失敗した場合とか)に、適切にリリースされる。というのもあった気がするんですが、ちょっとあいまい…。
2011-04-28 21:56:12
藤本直明/FUJIMOTO Naoaki
@naokiring
@idojun @takmin そうですね。デフォルトコンストラクタを使う場合は、単に初期化子を省略しているだけ、という風に理解しておけば…。
2011-04-28 21:57:43
Minagawa Takuya
@takmin
@miyabiarts なるほど。クラスの継承表現と似ていたので、こんがらがっちゃいました。ありがとうございます。
2011-04-28 21:59:29
藤本直明/FUJIMOTO Naoaki
@naokiring
@takmin そういう理解でいいと思います。A()の中に入った時点で、bのデフォルトコンストラクタはすでに呼ばれていますし(デフォルトコンストラクタB()が無ければ(privateなら)、そもそもコンパイルエラーに…)
2011-04-28 22:01:26