Форум программистов, компьютерный форум CyberForum.ru

Сложение матриц - C++

Восстановить пароль Регистрация
 
lulusa
0 / 0 / 0
Регистрация: 04.10.2013
Сообщений: 11
12.02.2014, 22:03     Сложение матриц #1
Здравствуйте, написал класс Matrix, реализовал перегрузку оператора+ (как метод). В классе я храню int** data, саму матрицу создаю динамически в конструкторе. Реализовал перегрузку оператора= (понтятно для чего)
Наткнулся на некторую проблему.

В мейне у меня есть где-то что-то вроде.

C++
1
A = B + C; //type Matrix
Т.е. оператор+ должен венруть новую матрицу в эту часть программы. Собственно вопрос в том, как это сделать.

Если так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
Matrix Matrix::operator+ (const Matrix& b) const
    {
    if (N == b.GetN () && M == b.GetM ()) //N, M - размеры матрицы
        {
        Matrix C (N, M);
        for (int i = 0; i < N; ++i)
            for (int j = 0; j < M; ++j)
                C.Set (i, j, Get (i, j) + b.Get (i, j));
 
        return C;
        }
    }
То после строчки
C++
1
2
return C;
        }
Вызовется деструктор локальной перемнной С, и та динамич. матрица перестанет существовать.

Т.е.
C++
1
A + B = C; //A принимает мусор
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2014, 22:03     Сложение матриц
Посмотрите здесь:

Сложение матриц C++
Сложение двух матриц C++
сложение двух матриц C++
C++ сложение двух матриц
C++ Сложение двух матриц
Сложение матриц(классы) C++
Умножение, сложение и транспонирование матриц C++
Сложение двух матриц 2x2 C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,204
Завершенные тесты: 1
12.02.2014, 22:19     Сложение матриц #2
Цитата Сообщение от lulusa Посмотреть сообщение
Вызовется деструктор локальной перемнной С,
До этого при выполнении операции return производится копирование матрицы C
(копиконструктор надо реализовать правильно, чтобы он копировал значения матрицы)
и уже эта копия передается на возврат значения.
Yandex
Объявления
12.02.2014, 22:19     Сложение матриц
Ответ Создать тему
Опции темы

Текущее время: 13:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru