Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
butcher
Зарегистрирован: 18.04.2003 Сообщения: 467 Откуда: Киров
|
Добавлено: Пт Май 17 2002 13:20 Заголовок сообщения: перегрузка оператора * в С++ |
|
|
Есть класс A
нужно организовать перегрузку
A& operator * (A& a, A& b) { ... return ??; }
короче надо сделать так, чтобы при умножении двух объектов этого класса можно было получить результат, если создавать объект внутри и потом возвращать его, он успевает деструтироваться, пока доходит до получателя подскажите как сделать? _________________ Нет ничего невозможного... |
|
Вернуться к началу |
|
|
Roman_2002
Зарегистрирован: 21.05.2002 Сообщения: 56 Откуда: Львов
|
Добавлено: Пт Май 17 2002 14:29 Заголовок сообщения: Re: перегрузка оператора * в С++ |
|
|
описать надо: friend TDegree operator*(TXxx &xxx, TXxx& xxx2);
реализация TXxx operator*(TXxx& Xxx, TXxx& Xxx2) { return ....; } чем тебе так не нравится? |
|
Вернуться к началу |
|
|
Вадим Гость
|
Добавлено: Пт Май 17 2002 15:52 Заголовок сообщения: Re: перегрузка оператора * в С++ |
|
|
Знакомая проблема. Секрет в том, что для класса A необходимо определить конструктор копирования. http://forum.citforum.ru/mes.php?id=17650&fs=400&ord=0&board=3&lst=0.. |
|
Вернуться к началу |
|
|
ilyasov Гость
|
Добавлено: Пт Май 17 2002 19:12 Заголовок сообщения: Re: перегрузка оператора * в С++ |
|
|
Если мне не изменяет память, то в C++ возвращение объекта возможно двумя путями 1. объект возвращается как A operator(A, A) -в этом случае его создание и удаление ложится на компилятор,
2. в случае, когда объект возвращается как ссылка, его нужно самому внутри перегружаемого оператора создавать и далее контролировать процесс уничтожения.
Т.е. мораль - большие объекты лучше не передавать. |
|
Вернуться к началу |
|
|
Uraa Гость
|
Добавлено: Вс Июн 23 2002 17:07 Заголовок сообщения: Re: перегрузка оператора * в С++ |
|
|
НЕЛЬЗЯ возвращать ссылку на локальный объект - после завершения функции его не существует. Возвращение ссылки на объект, созданный new, ведет к утечке памяти (кто будет вызывать delete?) или придется писать свой собственный сборщик мусора. Единственный способ - возвращать объекты по значению. Чтобы избежать излишних накладных расходов возвращаемый объект лучше сделать 'типа дескриптора' см. например реализацию класса строк. |
|
Вернуться к началу |
|
|
|