|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.12.2011, 18:54 | #1 |
Пользователь
Регистрация: 23.11.2011
Сообщений: 20
|
Проблема с перегрузкой операторов
Нужно сделать программу для сложения, вычитания, умножения матриц. В конечном счете нужно получить результат x1=2*A*(A+B)-3*A. x1,A,B - объекты. Написал код, но проблема в том, что строка x1=(x2+x3)*2 вызывает "Invalid allocation size". В чем проблема? Причем, если возвращать от оператора не временный класс, а собственный то проблемы вроде нет.
Код:
Последний раз редактировалось Furchtlos; 27.12.2011 в 18:58. |
27.12.2011, 20:39 | #2 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Далеко не лазил, на вскидку:
Код:
То есть, мы знаем, что время жизни локального объекта - пока не закончится область видимости блока, который порождает локальный объект, но нам пофегу, да? Мы щитаем, что так делать правильно? Возвращать указатели на уже убитые объекты? |
27.12.2011, 20:43 | #3 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
тем более мы возвращаем объект который еще жив. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
27.12.2011, 20:52 | #4 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
приёмник = источник.operator*(m2); // срабатывает копирующий конструктор. Вот только что он копирует? Данные протухшего объекта? Последний раз редактировалось _Bers; 27.12.2011 в 20:58. |
|
27.12.2011, 20:58 | #5 | |||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
для операторов возвращающих *this лучше возвращать ссылку. а вот как аргумент стоит принимать ссылку(кроме базовых типов). Цитата:
итого копируем return-value. Цитата:
http://cplusplus.com/reference/string/operator+/ посмотрите здесь типы Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 27.12.2011 в 21:01. |
|||
27.12.2011, 21:03 | #6 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Код:
Последний раз редактировалось _Bers; 27.12.2011 в 21:06. |
|
27.12.2011, 21:05 | #7 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Функция изменяющая обьект и функция возвращающая новый обьект это разные вещи.
да и про такие функции(например оператор *=) я сказал что там правильнее возвращать ссылку. Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
27.12.2011, 21:05 | #8 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Трупака копируем |
|
27.12.2011, 21:10 | #9 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
вы что не можете понять код? Код:
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
27.12.2011, 21:11 | #10 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
ааа... да да, понятна
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
проблема с перегрузкой оператора потока в классах - << | monolit111 | Общие вопросы C/C++ | 13 | 27.11.2011 20:40 |
Программа на языке С с использованием условных операторов и операторов цикла. | Valentin Pirgach | Помощь студентам | 0 | 17.10.2011 20:16 |
Проблема с перегрузкой операторов в C++ | StudentofSUSU | Помощь студентам | 2 | 30.09.2010 10:04 |
Проблема с перегрузкой операторов, не могу разобраться | mrLee | Помощь студентам | 1 | 30.01.2010 00:23 |
Проблема с перегрузкой операторов, не могу разобраться | mrLee | Общие вопросы C/C++ | 0 | 29.01.2010 18:45 |