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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
lulusa
0 / 0 / 0
Регистрация: 04.10.2013
Сообщений: 11
#1

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

12.02.2014, 22:03. Просмотров 621. Ответов 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++
Умножение, сложение и транспонирование матриц C++
Сложение и умножение матриц C++
Сложение двух матриц C++
Сложение двух матриц 2x2 C++
Сложение матриц C++

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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru