Статья

Статья Перегрузка операций

Работа добавлена на сайт bukvasha.net: 2015-10-29

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 27.1.2025



Перегрузка операций

Настоящий класс ostream определяет операцию <<, чтобы сделать удобным вывод нескольких объектов одним оператором. Давайте посмотрим, как это сделано.

Чтобы определить @, где @ - некоторая операция языка C++, для каждого определяемого пользователем типа вы определяете функцию с именем operator@, которая получает параметры соответствующего типа. Например:

class ostream {

  //...

  ostream operator<<(char*);

};

ostream ostream::operator<<(char* p)

{

  while (*p) buf.sputc(*p++);

  return *this;

}

определяет операцию << как член класса ostream, поэтому s< ");

а если применить операцию взятия адреса, то вы получите адрес объекта, на который ссылается ссылка:

&s1 == &my_out

Первая очевидная польза от ссылок состоит в том, чтобы обеспечить передачу адреса объекта, а не самого объекта, в функцию вывода (в некоторых языках это называется передачей параметра по ссылке):

ostream& operator<<(ostream& s, complex z) {

  return s << "(" << z.real << "," << z.imag << ")";

}

Достаточно интересно, что тело функции осталось без изменений, но если вы будете осуществлять присваивание s, то будете воздействовать на сам объект, а не на его копию. В данном случае то, что возвращается ссылка, также повышает эффективность, поскольку очевидный способ реализации ссылки - это указатель, а передача указателя гораздо дешевле, чем передача большой структуры данных.

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

class istream {

  //...

  int state;

public:

  istream& operator>>(char&ap;);

  istream& operator>>(char*);

  istream& operator>>(int&);

  istream& operator>>(long&);

  //...

};

Заметьте, что для чтения long и int используются разные функции, тогда как для их печати требовалась только одна. Это вполне обычно, и причина в том, что int может быть преобразовано в long по стандартным правилам неявного преобразования, избавляя таким образом программиста от беспокойства по поводу написания обеих функций ввода.

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://www.realcoding.net



1. Курсовая на тему Разработка программы игры Собери картинку
2. Реферат на тему Charles Dickens Tone Essay Research Paper When
3. Реферат на тему The Importance Of Moral Values Essay Research
4. Курсовая на тему Оценка производственных мощностей предприятия
5. Реферат Исламское движение Узбекистана
6. Реферат на тему Review The Skeptical Environmentalist Essay Research Paper
7. Курсовая Инвестиции на железной дороге
8. Курсовая на тему Теоретические основы учета расчетов по заработной плате и видов удержаний из нее
9. Курсовая на тему Деятельность органов самоуправления на поселенческом уровне
10. Реферат Векторы, использующиеся в генной инженерии