fork(2) download
  1. #include <iostream>
  2. #include <initializer_list>
  3.  
  4. class arr1D
  5. {
  6. protected:
  7. int size;
  8. int *arr;
  9. public:
  10. arr1D(const std::initializer_list<int>& input) : size(input.size())
  11. {
  12. int* temp = new int[size];
  13. int index = 0;
  14. for (const auto& it : input)
  15. {
  16. temp[index] = it;
  17. ++index;
  18. }
  19. arr = temp;
  20. }
  21.  
  22. arr1D(int siz = 10) :size(siz), arr(new int[size] {0}) // this will also do the same job
  23. {}
  24. ~arr1D() //check rule of 3: also need operator= and copy assignment con.
  25. {
  26. delete arr;
  27. }
  28. friend std::ostream & operator<<(std::ostream &, const arr1D &);
  29. };
  30. int main()
  31. {
  32. arr1D a1 = { 1,2,3,4,5 };
  33. std::cout << a1 << std::endl;
  34.  
  35. arr1D a2;
  36. std::cout << a2 << std::endl;
  37.  
  38. std::cin.get();
  39. }
  40. std::ostream & operator<<(std::ostream &_return, const arr1D &a)
  41. {
  42. _return << "arr: ";
  43. for (int i = 0; i<a.size; i++)
  44. {
  45. std::cout << *(a.arr + i) << " ";
  46. }
  47. _return << "size: " << a.size;
  48. return _return;
  49. }
  50.  
  51.  
Success #stdin #stdout 0s 4340KB
stdin
Standard input is empty
stdout
arr: 1 2 3 4 5 size: 5
arr: 0 0 0 0 0 0 0 0 0 0 size: 10