#
“
ロベールのC++入門講座を読んで C++ を初歩の初歩から再入門するよ - 後編 - Higepon’s blog - Mona OS and Moshplacement new も知っているよと思ったら長年の疑問を解消してくれた。
class Foo { public: Foo() { cout << "Foo()" << endl; } Foo(int n) { cout << "Foo(" << n << ")" << endl; } };のようなクラスがあったとして Foo(n) で初期化した Foo を配列に入れたい。
// Foo* manyFoo = new Foo[50]; // Foo() が呼ばれてしまい悲しい Foo* manyFoo2 = reinterpret_cast<Foo*>(new char[sizeof (Foo) * 50]); for (int i = 0; i < 50; i++) { manyFoo2[i] = Foo(i); manyFoo2[i].~Foo(); // 明示的にデストラクタを呼ぶ } delete[] manyFoo2;
1ヶ月前に投稿されました. リアクションが0件あります.