Вызывается деструктор при выходе из метода
Почему на 29 строке вызывается деструктор Object и данные в массиве теряются? Я совсем ничего не понимаю.
#include <iostream>
#include <conio.h>
using namespace std;
class MyArray {
protected:
double* array;
int size;
public:
MyArray(double *array, int size);
~MyArray();
void FirstMethod(MyArray Object);
void SecondMethod(MyArray Object);
};
MyArray::MyArray(double *iarray, int isize) {
size = isize;
array = new double[size];
for (int _ = 0; _ < size; _++) {
array[_] = iarray[_];
}
}
MyArray::~MyArray() {
cout << "delete\n";
delete[] array;
}
void MyArray::FirstMethod(MyArray Object) {}
void MyArray::SecondMethod(MyArray Object) {
FirstMethod(Object);
cout << endl;
}
int main() {
double firstArray[3] = {31, 32, 33};
MyArray firstObject(firstArray, 3);
double secondArray[3] = {7.8, 8.3, 7.6};
MyArray secondObject(secondArray, 3);
firstObject.SecondMethod(secondObject);
getch();
return 0;
}
Источник: Stack Overflow на русском