Поделись:





РАЗДЕЛЫ
Авиация и космонавтика (292)
Административное право (113)
Английский язык (62064)
Арбитражный процесс (22)
Архитектура (98)
Астрология (15)
Астрономия (4788)
Банкосвкое дело (4987)
Без категории (14560)
Безопасность жизнедеятельности (2585)
Биографии (3219)
Биология (4036)
Биология и химия (1421)
Биржевое дело (61)
Ботаника и сельское хозяйство (2694)
Бухгалтерский учет и аудит (7694)
Валютные отношения (47)
Ветеринария (45)
Военная кафедра (732)
География (4779)
Геодезия (27)
Геология (1186)
Геополитика (42)
Государство и право (19449)
Гражданское право и процесс (434)
Делопроизводство (17)
Деньги и кредит (96)
ЕГЭ (32)
Естествознание (92)
Журналистика (899)
ЗНО (47)
Зоология (34)
Издательское дело и полиграфия (475)
Инвистиции (91)
Информатика (3452)
Информатика, программирование (5960)
Исторические личности (2109)
История (20812)
История техники (765)
Кибернетика (60)
Коммуникации и связь (3050)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (580)
Краткое содержание произведений (1000)
Криминалистика (102)
Криминология (46)
Кулинария (1147)
Культура и искусство (8212)
Культурология (501)
Литература (зарубежная) (2035)
Литература и русский язык (11459)
Логика и логстика (545)
Маркетинг (7739)
Медицина и здоровье (9936)
Международное право (79)
Международные отношения (2189)
Менеджмент (11960)
Металлургия (82)
Москвоведение (764)
Музыка (1307)
Налоги и налогооблажение (199)
Наука и техника (1139)
Начертательная геометрия (9)
Окультизм и уфология (8)
Педагогика (7566)
Политология (3650)
Право, юриспруденция (3708)
Предпринимательство (406)
Промышленность и производство (6865)
Психология (8363)
Психология и педагогика (4048)
Радиоэлектронника (364)
Реклама (948)
Религия и мифология (2829)
Риторика (23)
Сексология (748)
Социология (4709)
Статистика (80)
Страхование (105)
Строительство (1984)
Таможенная система (655)
Теория государства и права (219)
Теория организации (35)
Технология (492)
Транспорт (2552)
Туризм (80)
Уголовное право и процесс (369)
Управление (105)
Физика (3298)
Физкультура и спорт (4360)
Философия (6846)
Финансовые науки (4389)
Финансы (5237)
Химия (2195)
Цифровые устройства (22)
Экология (4322)
Экономика (19673)
Экономико-математическое моделирование (644)
Экономическая география (113)
Экономическая теория (2472)
Этика (887)
Юриспруденция (268)
Языковедение (135)
Языкознание и филология (1140)
Счетчики


Перегрузка операций
Раздел: Информатика, программирование

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

Настоящий класс 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 по стандартным правилам неявного преобразования, избавляя таким образом программиста от беспокойства по поводу написания обеих функций ввода.



Оценка: 0. | Оценило 0 человека.
ВНИМАНИЕ
Уважаемые гости, хотим обратить Ваше внимание на то, что все представленные работы на этом сайте получены с публичных ресурсов, находятся в свободном доступе, не являются уникальными и не подходят для их сдачи "как есть".
Если вы обладаете авторским правом на какую либо информацию, размещенную на нашем сайте и не согласны с её общедоступностью, обязательно сообщите нам об этом.
Данные работы Вы можете использовать в качестве дополнительных материалов для написания своего реферата либо любой другой работы.
В ПОМОЩЬ УЧАЩИМСЯ
Мы настоятельно рекомендуем нашим пользователям самостоятельно выполнять все работы. Но бывают ситуации, когда нет возможности, либо элементарно времени, чтобы самому заниматься той или иной работой. В этом случае можно заказать выполнение за вас реферата, курсовой и т.д. Но будет ли такая работа соответствовать всем вашим критериям? Сомневаемся. Поэтому хотим дать вам хороший совет. Найдите на нашем сайте работу, максимально подходящую под ваши критерии. Закажи повышение оригинальности и получите уникальную работу для сдачи. Это сэкономит вам деньги и вы получите именно то, что хотели.
НОВОСТИ НАУКИ
Обратная связь
По всем интересующим вас вопросам обращайтесьна почту:


Если у вас есть интересная работа и вы хотите ей поделиться, присылайте ее нам и мы обязательно разместим ее на нашем сайте, а пользователи обязательно скажут вам спасибо: