6.5 Большие Объекты

6.5 Большие Объекты

При каждом применении для comlpex бинарных операций, описанных выше, в функцию, которая реализует операцию, как параметр передается копия каждого операнда. Расходы на копрование каждого double заметны, но с ними вполне можно примриться. К сожалению, не все классы имеют небольшое и удобное представление. Чтобы избежать ненужного копирования, можно описать функции таким образом, чтобы они получали ссылочные параметры. Например:

class matrix (* double m[4][4]; public: matrix(); friend matrix operator+(matrix amp;, matrix amp;); friend matrix operator*(matrix amp;, matrix amp;); *);

Ссылки позволяют использовать выражения, содержащие обычные арифметические операции над большими объектами, без ненужного копирования. Указатели применять нельзя, потому что невозможно для применения к указателю смысл операции переоределить невозможно. Операцию плюс можно определить так:

matrix operator+(matrix amp;, matrix amp;); (* matrix sum; for (int i=0; i«4; i++) for (int j=0; j«4; j++) sum.m[i][j] = arg1.m[i][j] + arg2.m[i][j]; return sum; *)

Эта operator+() обращается к операндам + через ссылки, но возвращает значение объекта. Возврат ссылки может оказатся более эффективным:

class matrix (* // ... friend matrix amp; operator+(matrix amp;, matrix amp;);

friend matrix amp; operator*(matrix amp;, matrix amp;); *);

Это является допустимым, но приводит к сложности с выдлением памяти. Поскольку ссылка на результат будет передваться из функции как ссылка на возвращаемое значение, оно не может быть автоматической переменной. Поскольку часто оперция используется в выражении больше одного раза, результат не может быть и статической переменной. Как правило, его размщают в свободной памяти. Часто копирование возвращаемого знчения оказывается дешевле (по времени выполнения, объему кода и объему данных) и проще программируется.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Объекты DataSet с множеством таблиц и объекты DataRelation

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Объекты DataSet с множеством таблиц и объекты DataRelation До этого момента во всех примерах данной главы объекты DataSet содержали по одному объекту DataTable. Однако вся мощь несвязного уровня ADO.NET проявляется тогда, когда DataSet содержит множество объектов DataTable. В этом случае вы можете


Большие новости

Из книги Цифровой журнал «Компьютерра» № 6 [2.2.2010 — 9.2.2010] автора Журнал «Компьютерра»

Большие новости Почем блог для чиновника? Алексей Стародымов Жизнь — штука непростая, и порой людям приходится заниматься делами, которые им не близки, неинтересны и в которых они совершенно не разбираются. Привести пример? Да запросто: мы уже рассказывали, с каким


Большие новости

Из книги Цифровой журнал «Компьютерра» № 7 [9.2.2010 — 16.2.2010] автора Журнал «Компьютерра»

Большие новости Стоит ли запретить торренты? Алексей Стародымов, Марина Пелепец В последнее время борьба с торрент-трекерами приняла действительно широкий размах — достаточно сказать, что за весь прошлый год силами голландской антипиратской организации Bescherming Rechten


Большие новости

Из книги Цифровой журнал «Компьютерра» № 11 [10.3.2010 — 16.3.2010] автора Журнал «Компьютерра»

Большие новости Украина формирует свой раздел "Википедии" Дмитрий Целиков Министр образования и науки Украины Иван Вакарчук призвал учёных соотечественников написать хотя бы по две-три статьи для украинского сегмента "Википедии", сообщает Интерфакс.«Украинский


Объекты OS/400 и системные объекты MI

Из книги Основы AS/400 автора Солтис Фрэнк

Объекты OS/400 и системные объекты MI Несколько типов объектов имеются и в OS/400, и в MI. Типы объектов OS/400 перечислены в таблице 5.1. Для сравнения, в таблице 5.2 приведены системные объекты MI. Помните, что в каждой новой версии AS/400 добавляются новые функции и даже новые объекты.


Большие новости

Из книги Цифровой журнал «Компьютерра» № 12 [17.3.2010 — 24.3.2010] автора Журнал «Компьютерра»

Большие новости Последнее китайское предупреждение Андрей Письменный Конфликт между Google и китайскими властями подходит к своему логическому завершению. Лицензия на работу поисковика в Китае истекает, и если ни одна из сторон не пойдёт на попятную, то китайское


Большие новости

Из книги Цифровой журнал «Компьютерра» № 13 [24.3.2010 — 30.3.2010] автора Журнал «Компьютерра»

Большие новости Электронных денег станет больше, если их не запретят Евгений Крестников 16 марта председатель совета ассоциации "Электронные Деньги" (АЭД) Виктор Достов сделал интересное заявление: он сказал, что в 2010 году объем российского рынка электронных платежей


Большие новости

Из книги Цифровой журнал «Компьютерра» № 15 [03.05.2010 — 09.05.2010] автора Журнал «Компьютерра»

Большие новости За что Adobe Flash отлучили от iPhone OS Михаил Карпов Исполнительный директор компании Apple Стив Джобс опубликовал на apple.com эссе «Мысли о Flash», в котором в полной мере объяснил, почему в устройствах на основе iPhone OS не работает Adobe Flash Player. Причин этому


Большие новости

Из книги Цифровой журнал «Компьютерра» № 21 [14.06.2010 — 20.06.2010] автора Журнал «Компьютерра»


Большие новости

Из книги Цифровой журнал «Компьютерра» № 23 [28.06.2010 — 04.07.2010] автора Журнал «Компьютерра»

Большие новости Internet Explorer 9 будет конкурировать с Silverlight Андрей Письменный Опубликовано 28 июня 2010 года Ещё совсем недавно Internet Explorer был, несмотря на проблемы с официальными веб-стандартами, настоящим стандартом де-факто. С тех пор Firefox, Safari и Chrome


Большие новости

Из книги Цифровой журнал «Компьютерра» № 25 [12.07.2010 — 18.07.2010] автора Журнал «Компьютерра»

Большие новости Эпоха Windows XP закончилась Ника Парамонова Опубликовано 12 июля 2010 года Поддержка Windows XP с пакетом обновления SP2 завершится 13 июля 2010 года. Активная разработка ПО Microsoft для этой системы прекращена, и новые версии продуктов не будут


Большие новости

Из книги Цифровой журнал «Компьютерра» № 26 [19.07.2010 — 25.07.2010] автора Журнал «Компьютерра»

Большие новости SpaceShipTwo совершил свой первый полёт Михаил Карпов Опубликовано 19 июля 2010 года Частный космический корабль SpaceShipTwo, принадлежащий компании Virgin Galactic, совершил свой первый пилотируемый полёт на борту самолёта-носителя WhiteKnightTwo. Правда,


Большие новости

Из книги Цифровой журнал «Компьютерра» № 28 [02.08.2010 — 08.08.2010] автора Журнал «Компьютерра»

Большие новости iPhone 4 научились взламывать Михаил Карпов Опубликовано 02 августа 2010 года Не успела выйти новая ревизия американского акта о копирайте в цифровую эпоху (DMCA), в которой пользователям было дано право взламывать залоченные телефоны, не


Большие новости

Из книги Цифровой журнал «Компьютерра» № 31 [23.08.2010 — 29.08.2010] автора Журнал «Компьютерра»

Большие новости О создателях Google снимут фильм Юрий Ильин Опубликовано 23 августа 2010 года Продюсеры Майкл Лондон и Джон Моррис приобрели права на экранизацию книги Кена Аулетты «Googled: The End of The Worlds As We Know It».Лондон и Моррис планируют снять по мотивам


Большие новости

Из книги Цифровой журнал «Компьютерра» № 36 [27.09.2010 — 03.10.2010] автора Журнал «Компьютерра»

Большие новости Первые телефоны на Windows Phone появятся в конце октября Михаил Карпов ОпубликованоМихаил Карпов Несмотря на то, что компания Microsoft не называет точной даты поступления в продажу смартфонов на основе новой мобильной ОС Windows Phone 7, в


Большие новости

Из книги Цифровой журнал «Компьютерра» № 37 [04.10.2010 — 10.10.2010] автора Журнал «Компьютерра»

Большие новости Облегчит ли жизнь голосовой поиск Google Андрей Письменный Опубликовано 04 октября 2010 года Больше двух лет назад в Google сделали голосовой поиск для мобильных телефонов. Означает это, что на телефоне можно зажать кнопочку с изображением