![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 20.06.2008
Сообщений: 125
|
![]()
Есть класс
Код:
Код:
Можно конечно написать что-нибудь вроде Код:
Можно ли как нибудь этого избежать? A sum(A & result, const A & arg1, const A & arg2); не предлагать ![]() |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
Ну, в некоторых случаях компилятор в качестве оптимизации может не проводить копирование объекта, а оставить его в стеке, не теряя таким образом время на копирование, но на сие полагаться не стоит )
Наиболее логичным было бы реализовать копирование по записи, то бишь разделение единственного массива между множеством объектов, при этом копия будет производится только когда какой-то из объектов попытается записать что-нибудь в этот массив, избегая глубокого копирования при передаче объектов в качестве параметра/возвращения из объекта из ф-ции. Пример этого, если не ошибаюсь, был у Страуструпа в его реализации класса строки - можете поискать. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 24.04.2010
Сообщений: 4
|
![]()
Другим интересным способом является реализация оператора += и оператора + на его основе:
Код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
классы,конструктор копирования,динамический массив экземпляров.Нужна помощь | bylynka | Общие вопросы C/C++ | 1 | 30.04.2009 21:56 |
С помощью методов и свойств объекта осуществляется управление терминалом. Имя (идентификатор) объекта | User>lia | Общие вопросы Delphi | 4 | 16.01.2009 16:37 |
Как поменять одну из текстур объекта не меняя все остальные и без повторной загрузки объекта в GLScene | DomKr@t | Мультимедиа в Delphi | 0 | 14.12.2008 01:52 |
Конструктор копирования | Djaconda | Общие вопросы C/C++ | 3 | 11.06.2008 18:54 |