powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите вернуть занчение функции
4 сообщений из 4, страница 1 из 1
Помогите вернуть занчение функции
    #33313748
morf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть прога:

class TMatrix {
int** mad;
int N, M;
public:
TMatrix(int, int);
void Print();
TMatrix operator+(TMatrix&);
TMatrix operator-(TMatrix&);
TMatrix operator*(TMatrix&);
TMatrix& operator=(TMatrix&);
~TMatrix();
};
TMatrix::TMatrix(int n, int m)
{
N=n;
M=m;
mad=new int*[N];
for (int i=0;i<M;i++)
mad=new int [M];

for (int i=0;i<N;i++)
for (int j=0;j<M;j++)
mad[j]=rand()%10;
};
void TMatrix::Print()
{
for (int i=0;i<N;i++)
{
for (int j=0;j<M;j++)
cout<<mad[j]<<' ';
cout<<endl;
}
};
TMatrix::~TMatrix()
{
for (int j=0;j<M;j++)
delete mad[j];
delete mad;
};
TMatrix& TMatrix::operator=(TMatrix& mas)
{
mad=new int*[mas.N];
for (int i=0;i<mas.M;i++)
mad=new int [mas.M];
N=mas.N;
M=mas.M;
for(int i=0;i<N;i++)
for(int j=0;j<M;j++)
mad[j]=mas.mad[j];
return *this;
}
TMatrix TMatrix::operator+(TMatrix& mas)
{
if ((N==mas.N)&&(M==mas.M))
{
TMatrix tmp=*this;
for(int i=0;i<N;i++)
for(int j=0;j<M;j++)
tmp.mad[j]+=mas.mad[j];
return tmp;
}
}


Оператор плюс должен вернуть матрицу, но после окончания функции переменная tmp исчезает удаляя за собой динамическую память выделеню под нее, в итоге я получаю обьект который содержит ссылку на область памяти которая содержит неясно что. Внимание вопрос: Как мне избавится от этой проблемы? и как написать конструктор копирования для такого класса?
...
Рейтинг: 0 / 0
Помогите вернуть занчение функции
    #33313772
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ребята, ну там же есть кнопка [srс]
блин , ну нечетабельно ...



 ш
(';')
(V),(V),,
Код: plaintext
 JS 
...
Рейтинг: 0 / 0
Помогите вернуть занчение функции
    #33313785
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По значению надо возвращать объекты в таких случаях.
...
Рейтинг: 0 / 0
Помогите вернуть занчение функции
    #33315036
SeraTJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обязательно добавь copy-constructor:
Код: plaintext
1.
TMatrix(const TMatrix& matrix);
Он должен содержать почти то же самое, что и в
Код: plaintext
1.
TMatrix& operator=(TMatrix&);


Просто когда ты в operatorе + возвращаешь tmp - локальную переменную, то здесь и вызывается копи-конструктор, затем объект tmp убивается.
А у тебя при отсутствии копи-контруктора у результирующей матрице: result.mad = tmp.mad (а tmp.map в деструкторе уже высвобожден).
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите вернуть занчение функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]