1. ホーム
  2. c++

[解決済み] C++でnew演算子を使ってメモリを初期化する方法は?

2022-05-06 14:41:22

質問

私はC++を始めたばかりで、良い習慣を身につけたいと思っています。もし私が型 int と共に new 演算子をループさせることなく、すべて 0 に初期化するにはどうしたらよいでしょうか?単に memset ? C++」的な方法はありますか?

どのように解決するのですか?

C++は意外と知られていない機能ですが(まだ誰もこれを答えとして出していないことからもわかるように)、実は配列の値を初期化するための特別な構文を持っています。

new int[10]();

なお、あなたは が必要です。 は空白の括弧を使用します。 (0) などがあります(そのため、これは値の初期化にのみ有効です)。

これは、ISO C++03 5.3.4[expr.new]/15 で明示的に許可されていることである。

のオブジェクトを作成する新しい式は、そのオブジェクトの型が T は、そのオブジェクトを次のように初期化します。

...

  • new-initializerが次のような形式である場合 () の場合、その項目は値で初期化される(8.5)。

で、これが許される型を制限していないのに対して (expression-list) の形式は、同じセクションのさらなるルールによって明示的に制限されており、配列の型は許可されません。