読者です 読者をやめる 読者になる 読者になる

コンストラクタが呼ばれた時点で初期化が終了してないとイヤだってじっちゃが言ってた

クラスのメンバ変数を参照で持つことは、私んちはそんなにしていません。
参照でHoldするメンバがいる場合、必ずコンストラクタ初期化子で初期値を指定してあげなくてはならないのですが、私んちは、initialize(と言う名前のただのメンバ)関数で依存性注入するスタイルが多いので、Null になれないのがかえって邪魔になってしまうから。なので メンバは shared_ptr で保持ることが多いです。

イネスさん - みねこあ

(゚∀゚)人(゚∀゚)ナカーマ

initialize とか作るのまで同じだ。shared_ptr なんてリッチ(?)なもの使わずに自前管理ですけどね。

const じゃない参照渡しはするなってばっちゃが言ってた - 好き勝手に・げーあにん?

initialize派が多いのかしら!
僕はコンストラクタが完了した時点で、
そのインスタンスはオブジェクトとして扱える状態になっていて欲しい派、
なので、initializeを持たなかったりします。
また、initializeにすると引数が多くなりすぎて面倒なので基本的にinitializeをつくりません。

例えば、等加速度運動を行うオブジェクトがある場合、
コンストラクタが呼ばれた時点で、
・初速
・加速度
・半径
・座標
・射出方向(xz平面)
・射出角度(yz平面)
・生存時間
などと様々な要素をセットしなければならず、
コンストラクタに限らず、
これらをinitializeに含めると引数が足りません。(というか煩雑です
なので、
コンストラクタではデフォルト値にて初期化し、
(例えばその等加速度運動を行うオブジェクトの所持者はコンストラクタで参照にて初期化する、
オブジェクトの所持者が変わる事はこの場合「まず」ないため)
面倒かもしれませんが、逐一、
setVelocity
setAccelerate
setRadius
setPosition
...
などとしていき、
最後にsetup
を呼ぶようにしています。

ただ、どちらが良いという訳ではなくて、
僕はこのデザインが好きなだけですよん。 =)