Как удалить двумерный динамический массив непосредственно в классе в c++?

Пользователь

от edyth , в категории: C/C++ , 8 месяцев назад

Как удалить двумерный динамический массив непосредственно в классе в c++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jakayla , 8 месяцев назад

@edyth 

Для удаления двумерного динамического массива непосредственно в классе в C++, вы можете использовать деструктор класса.


Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
class MyClass {
private:
    int** array;  // указатель на двумерный динамический массив
    int rows;     // количество строк
    int cols;     // количество столбцов

public:
    // конструктор класса
    MyClass(int numRows, int numCols) : rows(numRows), cols(numCols) {
        // выделение памяти для двумерного массива
        array = new int*[rows];
        for (int i = 0; i < rows; ++i) {
            array[i] = new int[cols];
        }

        // инициализация массива значениями по умолчанию
        for (int i = 0; i < rows; ++i) {
            for (int j = 0; j < cols; ++j) {
                array[i][j] = 0;
            }
        }
    }

    // деструктор класса
    ~MyClass() {
        // освобождение памяти двумерного массива
        for (int i = 0; i < rows; ++i) {
            delete[] array[i];
        }
        delete[] array;
    }
};

int main() {
    MyClass obj(3, 4);  // создание объекта класса

    // использование объекта

    return 0;
}


В этом примере, двумерный динамический массив array создается в конструкторе класса, а освобождается в деструкторе класса. Вы можете использовать delete[] для освобождения памяти для каждого измерения массива, а затем delete[] для освобождения памяти, выделенной под указатель на массив строк.