// 引数有のコンストラクタを持つクラスの配列の初期化
#include <iostream>
#include <new> // placement new のために new をインクルード
using namespace std;
class Hoge{
private:
int int_var;
public:
Hoge();
Hoge(int int_argv);
void PrintIntVar();
};
// 引数なしコンストラクタを宣言する
Hoge::Hoge(){
int_var = -1;
};
Hoge::Hoge(int int_argv){
int_var = int_argv;
};
void Hoge::PrintIntVar(){
cout << int_var << " ";
}
int main() {
// your code goes here
Hoge hoge[10];
for(int i=0; i<10; i++){
hoge[i].PrintIntVar();
}
cout << endl;
for(int i=0; i<10; i++){
new(hoge+i)Hoge(i); //各要素に対してplacement new
//hoge[i] = Hoge(i); // こっちでも可?
}
for(int i=0; i<10; i++){
hoge[i].PrintIntVar();
}
cout << endl;
return 0;
}
Ly8g5byV5pWw5pyJ44Gu44Kz44Oz44K544OI44Op44Kv44K/44KS5oyB44Gk44Kv44Op44K544Gu6YWN5YiX44Gu5Yid5pyf5YyWCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPG5ldz4gLy8gcGxhY2VtZW50IG5ldyDjga7jgZ/jgoHjgasgbmV3IOOCkuOCpOODs+OCr+ODq+ODvOODiQp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgSG9nZXsKcHJpdmF0ZToKCWludCBpbnRfdmFyOwoKcHVibGljOgoJSG9nZSgpOwoJSG9nZShpbnQgaW50X2FyZ3YpOwoJdm9pZCBQcmludEludFZhcigpOwp9OwoKLy8g5byV5pWw44Gq44GX44Kz44Oz44K544OI44Op44Kv44K/44KS5a6j6KiA44GZ44KLCkhvZ2U6OkhvZ2UoKXsKCWludF92YXIgPSAtMTsKfTsKCkhvZ2U6OkhvZ2UoaW50IGludF9hcmd2KXsKCWludF92YXIgPSBpbnRfYXJndjsKfTsKCnZvaWQgSG9nZTo6UHJpbnRJbnRWYXIoKXsKCWNvdXQgPDwgaW50X3ZhciA8PCAiICI7Cn0KCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJSG9nZSBob2dlWzEwXTsKCglmb3IoaW50IGk9MDsgaTwxMDsgaSsrKXsKCQlob2dlW2ldLlByaW50SW50VmFyKCk7Cgl9Cgljb3V0IDw8IGVuZGw7CgkKCWZvcihpbnQgaT0wOyBpPDEwOyBpKyspewoJCW5ldyhob2dlK2kpSG9nZShpKTsJLy/lkITopoHntKDjgavlr77jgZfjgaZwbGFjZW1lbnQgbmV3CgkJLy9ob2dlW2ldID0gSG9nZShpKTsJLy8g44GT44Gj44Gh44Gn44KC5Y+v77yfCgl9CgkKCWZvcihpbnQgaT0wOyBpPDEwOyBpKyspewoJCWhvZ2VbaV0uUHJpbnRJbnRWYXIoKTsKCX0KCWNvdXQgPDwgZW5kbDsKCQoJcmV0dXJuIDA7Cn0=