Вызывается деструктор при выходе из метода

Почему на 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;
}

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Тарас Атавин

Ну а чего Вы хотите? Метод получает параметр по значению, а по значению можно получить только копию параметра, эта копия при завершении метода и удаляется. Это нормально.

→ Ссылка