Форум программистов, компьютерный форум, киберфорум
Наши страницы

Класс матриц - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание bmp файлов на С++ http://www.cyberforum.ru/cpp-beginners/thread523412.html
Поделитесь пожалуйста информацией о том как создавать bmp файл на языке С++, а точнее создать файл bmp содержащий текст. Заранее благодарен.
C++ Случайные числа. Есть числа 2,4,6,8,0 - из них нужно случайно выбрать одно. Как это сделать? Google'ил, нашел только что то по типу #include <stdlib.h> ... randomize(); int a = random(N); //генерит число в... http://www.cyberforum.ru/cpp-beginners/thread523408.html
Найти размер самого длинного слова в строке. C++
Строка состоит из нескольких слов, разделенных одним или несколькими пробелами.
C++ Определить сколько символов стоят после двоеточия
С клавиатуры вводится строка символов, содержащая " : " Определить сколько символов стоят после двоеточия.
C++ Класс "Денежная сумма" http://www.cyberforum.ru/cpp-beginners/thread523389.html
#include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv) class Densum {private: long double summa; public: Densum();
C++ Функция создающая новую матрицу Нужна функция которая создает новую квадратную матрицу, где элементы вычисляются по формуле B=1/(i+j-1) Не уверен правильно ли функция возвращает значение. И еще нужно вывести получившуюся матрицу... подробнее

Показать сообщение отдельно
retmas
Жарю без масла
864 / 746 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
21.03.2012, 09:04
Цитата Сообщение от dota Посмотреть сообщение
После того , как я вместо Matrix res(n_rows,n_columns) поставил Matrix res(*this) , оба метода заработали .
у вас не определён конструктор копирования. поэтому для Matrix res(*this) был сгенерирован конструктор копирования по умолчанию, в котором идёт простое копирование полей класса:
C++
1
2
3
res.n_rows = this->n_rows;
res.n_columns = this->n_columns;
res.mData = this->mData;
и вы получаете 2 объекта с общим mData: член mData объектов *this и res указывают на одну и ту же область памяти.
без деструктора код "работал" именно поэтому - все манипуляции производились с этой общей памятью. но как только вы определяете деструктор, уже в swap_rows он вызывается для res перед выходом из ф-ии, память освобождается(общая для нескольких объектов). таким образом, становятся невалидными res.mData и this->mData. в результате при последующем вызове print (или другого метода)
Цитата Сообщение от dota Посмотреть сообщение
программа "вылетает"
далее. ваш operator= не только ничего не возвращает, но и присваивает временной, локальной переменной.
в общем, если вы исправите свои операции копирования, то вылетать перестанет.
но т.к. ваши swap_rows и power изменяют временный локальный объект, придётся либо писать как я показывал в своем предыдущем посте, либо работать в ф-ях с данными объекта this
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru