fork download
  1. #include <iostream>
  2. using std::cout;
  3. using std::endl;
  4.  
  5. class forlab
  6. {
  7. public:
  8. std::string name;
  9. int size;
  10. int* arr;
  11. forlab(std::string name, int size) {
  12.  
  13. cout << "Ctor " << name << endl;
  14.  
  15. this->size = size;
  16. this->name = name;
  17. *&arr = new int[size];
  18. for (int i = 0; i < size; i++) {
  19. arr[i] = 0;
  20. }
  21. }
  22. forlab() {
  23. cout << "Default ctor\n";
  24. this->name = "";
  25. this->size = 0;
  26. this->arr = 0;
  27. }
  28. forlab(const forlab& f):name(f.name),size(f.size)
  29. {
  30.  
  31. cout << "Copy ctor " << name << endl;
  32.  
  33. arr = new int[size];
  34. for (int i = 0; i < size; i++) {
  35. arr[i] = f.arr[i];
  36. }
  37. }
  38. ~forlab() {
  39. cout << "Dtor " << name << endl;
  40.  
  41. delete [] this->arr;
  42. }
  43.  
  44. int& operator[] (const int index);
  45. friend forlab operator+(const forlab a,const forlab b);
  46. void show() {
  47. for (int i = 0; i < size; i++) {
  48. cout << this->arr[i] << " ";
  49. }
  50. cout << endl;
  51. }
  52. };
  53.  
  54. int& forlab::operator[] (const int index)
  55. {
  56. return this->arr[index];
  57. }
  58. forlab operator+(const forlab a, const forlab b) {
  59. forlab temp("", a.size+b.size);
  60. for (int i = 0; i < a.size; i++) {
  61. temp.arr[i] = a.arr[i];
  62. }
  63. int counter = a.size;
  64. for (int i = 0; i < b.size; i++) {
  65. temp.arr[counter] = b.arr[i];
  66. counter++;
  67. }
  68. return temp;
  69. }
  70.  
  71. int main() {
  72. forlab ex1("first", 15);
  73. forlab ex2("second", 20);
  74. forlab ex3 = ex1 + ex2;
  75. ex3.show();
  76. return 0;
  77. }
  78.  
Success #stdin #stdout 0s 4380KB
stdin
Standard input is empty
stdout
Ctor first
Ctor second
Copy ctor second
Copy ctor first
Ctor 
Dtor first
Dtor second
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
Dtor 
Dtor second
Dtor first