掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VC++6.0 newでのメモリ確保 (ID:55372)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
POD 型のコンストラクタはちょっと特殊?な動きをするので注意。 括弧なし構築では「何もしない初期化」がなされるのに対して 括弧つき構築では「0初期化」がされます。 (言語規格書でそう決まっています 8.5 Initializers) int x; // 「なにもしない初期化」がなされる; 値は不定 int y(); // 関数宣言になるため y を初期化する構文とみなされない template<class T> T create_object() { return T(); } int z=create_object<int>(); // 「0初期化」がなされる; 値は0 # ここまでは gcc/bcc/vc++ みな共通に使える 同じことが new でも言えて、 int* x=new int; // 「なにもしない初期化」がなされる; 値は不定 int* y=new int(); // 「0初期化」がなされる; 値は0 # VC++6 はこの規格確定より古い処理系なので、後者が仕様書どおりではありません。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.