egtra 2012-08-02 14:50:48

[C++] とりあえず0 このエントリーをはてなブックマークに追加

投稿者からのアピールポイント

ゼロ初期化したければ、C++では(Cと違って)hoge x = {};でいいんです。なのに、なぜかみんな0を書かずにいられない。

実際問題、1番目のメンバ変数がクラスだったら0と書いてコンパイルが通るとは限らない、という汎用性のなさもあります。なので、すべてのメンバをゼロ初期化したければ{}と書いてすべてのメンバをコンパイラにお任せするほうが良いです。

struct hoge {
    int foo;
    double bar;
    std::string piyo;
};

hoge x = {0};

コメント(3)

#1 crv_the_coder 2012-08-15 02:57:26  

C/C++を日常的にとっかえひっかえ使ってるから、これはよくやっちゃうなぁ・・・反省

#2 Chiether 2012-09-04 18:18:52  

1度だけ。 {} が原因(?)で 例外吐いた事があります。 {0} にしたところ問題なかったので放置しましたが

あれは何だったのか。 (色んなところで{}してるのに、そこだけ{}にすると落ちた)。 夢だったと思いたいがVC++のせいにしておこう。

#3 YanaPIIDXer 2015-01-16 18:21:10  

と言うかデフォルトコンストラクタ(或いはゼロクリア用関数)定義した方がいい気が。


このウンコードに臭った人は、こちらのウンコードにも臭ってます

[C] すげーちゃんと動く!

このエントリーをはてなブックマークに追加

結合試験2日前に脱退したうんkプログラマ...

return 0;

鑑賞する »

[C++] 横着はやめて

このエントリーをはてなブックマークに追加

初期化子書くのが面倒なのは分かりますが…...

class hoge
{
public:
	hoge() { memset...

鑑賞する »

[C] 何がしたかったのか

このエントリーをはてなブックマークに追加

10年位前、炎上しているプロジェクトの支...

void funcX() {
    int a;
    a = func...

鑑賞する »