私は検索してきましたが、これに対する答えを見つけることができませんでした。 new
演算子にと言う方法はありますか?をクラスコンストラクタと呼んでいないのですか?クラスインスタンスのC++初期化されていない配列
MyObject* array = new MyObject[1000];
これは、MyObject()
を1000回呼び出します。割り当てられたメモリを自分で埋めたいので、コンストラクタで初期化された情報は必要ありません。 malloc()
を使用すると、非常に調和のとれたC++コードimhoではありません。
MyObject* array = (MyObject*) malloc(sizeof(MyObject) * 1000);
あなたの答えをありがとう。 'static_cast'を上回るCスタイルのキャストを使用する場合の短所はありますか?構築構文は私にとって初めてのものでした。スピードが鍵ですが、実際には固定数の要素の線形配列が必要なのでマップは合っていないと思います。 –
@Niklasこの場合、欠点はありません。 Cスタイルのキャストは、成功するキャストセットの最初のものとして定義されています。この場合、 'static_cast'と同等です。しかし、私は明白であることを好む。また、プレースメントの新しい構文については、Stack Overflowに関する多くの情報があります。 –
@NiklasRオブジェクトを順番に(インデックス0以上から)または配列内の任意の位置に作成したいですか?それらを順番にしたい場合は、遅い 'std :: vector'答えが適切です。 –