ゼロ初期化したければ、C++では(Cと違って)hoge x = {};でいいんです。なのに、なぜかみんな0を書かずにいられない。
実際問題、1番目のメンバ変数がクラスだったら0と書いてコンパイルが通るとは限らない、という汎用性のなさもあります。なので、すべてのメンバをゼロ初期化したければ{}と書いてすべてのメンバをコンパイラにお任せするほうが良いです。
struct hoge {
int foo;
double bar;
std::string piyo;
};
hoge x = {0};
1度だけ。 {} が原因(?)で 例外吐いた事があります。 {0} にしたところ問題なかったので放置しましたが
あれは何だったのか。 (色んなところで{}してるのに、そこだけ{}にすると落ちた)。 夢だったと思いたいがVC++のせいにしておこう。
と言うかデフォルトコンストラクタ(或いはゼロクリア用関数)定義した方がいい気が。
C/C++を日常的にとっかえひっかえ使ってるから、これはよくやっちゃうなぁ・・・反省