Язык программирования C++ для профессионалов

       

Вывод пользовательских типов


Рассмотрим пользовательский тип данных:

class complex { double re, im; public: complex(double r = 0, double i = 0) { re=r; im=i; }

friend double real(complex& a) { return a.re; } friend double imag(complex& a) { return a.im; }

friend complex operator+(complex, complex); friend complex operator-(complex, complex); friend complex operator*(complex, complex); friend complex operator/(complex, complex); //... };

Для нового типа complex операцию << можно определить так:

ostream& operator<<(ostream&s, complex z) { return s << '(' real(z) << ',' << imag(z) << ')'; };

и использовать как operator<< для встроенных типов. Например,

main() { complex x(1,2); cout << "x = " << x << '\n'; }

выдаст

x = (1,2)

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

on_load_lecture()



Дальше »

  Если Вы заметили ошибку - сообщите нам.  
Страницы:

1

|

2

|

3

|

4

|

5

|

6

|

7

|

8

|

вопросы | »

|

учебники

|

для печати и PDA

Курсы | Учебные программы | Учебники | Новости | Форум | Помощь



Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru

© 2003-2007, INTUIT.ru::Интернет-Университет Информационных Технологий - дистанционное образование



Содержание раздела