fork download
  1. // 引数有のコンストラクタを持つクラスの配列の初期化
  2. #include <iostream>
  3. #include <new> // placement new のために new をインクルード
  4. using namespace std;
  5.  
  6. class Hoge{
  7. private:
  8. int int_var;
  9.  
  10. public:
  11. Hoge();
  12. Hoge(int int_argv);
  13. void PrintIntVar();
  14. };
  15.  
  16. // 引数なしコンストラクタを宣言する
  17. Hoge::Hoge(){
  18. int_var = -1;
  19. };
  20.  
  21. Hoge::Hoge(int int_argv){
  22. int_var = int_argv;
  23. };
  24.  
  25. void Hoge::PrintIntVar(){
  26. cout << int_var << " ";
  27. }
  28.  
  29. int main() {
  30. // your code goes here
  31. Hoge hoge[10];
  32.  
  33. for(int i=0; i<10; i++){
  34. hoge[i].PrintIntVar();
  35. }
  36. cout << endl;
  37.  
  38. for(int i=0; i<10; i++){
  39. new(hoge+i)Hoge(i); //各要素に対してplacement new
  40. //hoge[i] = Hoge(i); // こっちでも可?
  41. }
  42.  
  43. for(int i=0; i<10; i++){
  44. hoge[i].PrintIntVar();
  45. }
  46. cout << endl;
  47.  
  48. return 0;
  49. }
Success #stdin #stdout 0s 3456KB
stdin
Standard input is empty
stdout
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 
0 1 2 3 4 5 6 7 8 9