8.2.2 Вывод Определяемых Пользователем Типов

8.2.2 Вывод Определяемых Пользователем Типов

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

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

friend double real(complex amp; a) (* returna.re; *) friend double real(complex amp; a) (* returna.re; *)

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

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

ostream amp; operator««(ostream amp;s, complex z) (* return s «« "(" «« real(z) «« "," «« imag(z) «« ")"; *)

и использовать точно так же, как для встроенного типа:

complex x(1,2); // ... cout «„ "x = " «« x «« « “;

получая при этом

x = (1,2)

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

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

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

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

2.6 Триумф интерфейса над пользователем?

Из книги автора

2.6 Триумф интерфейса над пользователем? Косметических улучшений за тридцать лет существования парадигмы WIMP была придумана масса, а вот более или менее серьезных, при внимательном анализе, обнаруживается только два: интеграция звука (и превращение графической


Взаимодействие с пользователем

Из книги автора

Взаимодействие с пользователем Второй пример показывает возможности взаимодействия пользователя с программой. Приложение представляет собой кнопку, которую пользователь может нажать и тогда приложение закончит свою работу. Исходный код этой программы очень


2.6 Триумф интерфейса над пользователем?

Из книги автора

2.6 Триумф интерфейса над пользователем? Косметических улучшений за тридцать лет существования парадигмы WIMP была придумана масса, а вот более или менее серьезных, при внимательном анализе, обнаруживается только два: интеграция звука (и превращение графической


Извлечение информации, введенной пользователем

Из книги автора

Извлечение информации, введенной пользователем Для того чтобы выяснить, какой текст ввел пользователь в текстовом поле, программа должна извлекать свойства Value или Text. Обычно вы должны назначить свойства для строковой переменной с оператором, как показано ниже:strText BoxText =


Функции, определенные пользователем

Из книги автора

Функции, определенные пользователем Для сохранения своего малого объема Firebird поставляется с весьма скромным арсеналом встроенных (родных) функций трансформации данных. Пользователи могут писать свои собственные функции на известном им языке, таком как C/C++, Pascal или Object


Объекты, определенные пользователем

Из книги автора

Объекты, определенные пользователем При восстановлении копии на сервер, отличный от того, с которого были сделаны копии, вы должны обеспечить существование на новом сервере наборов символов и порядков сортировки, на которые ссылается копия. Копия не может быть


6.2.3 Операции и Определяемые Пользователем Типы

Из книги автора

6.2.3 Операции и Определяемые Пользователем Типы Функция операция должна или быть членом, или получать в качестве параметра по меньшей мере один объект класса (фунциям, которые переопределяют операции new и delete, это длать необязательно). Это правило гарантирует, что


6.3 Определяемое Пользователем Преобразование Типа

Из книги автора

6.3 Определяемое Пользователем Преобразование Типа Приведенная во введении реализация комплексных чисел слишком ограничена, чтобы она могла устроить кого-либо, потому ее нужно расширить. Это будет в основном повторением описанных выше методов. Например:class complex (* double re, im;


8.2.1 Вывод Встроенных Типов

Из книги автора

8.2.1 Вывод Встроенных Типов Класс ostream определяется вместе с операцией «„ («пместить в“) для обработки вывода встроенных типов:class ostream (* // ... public: ostream amp; operator««(char*); ostream amp; operator««(int i) (* return *this««long(i); *) ostream amp; operator««(long); ostream amp; operator««(double);ostream amp; put(char); *);Функция operator««


Получение пользователем билета TGT на билеты

Из книги автора

Получение пользователем билета TGT на билеты В начале сеанса регистрации пользователь обращается к сервису аутентификации (Authentication Service - AS) Kerberos за получением билета TGT для ЦРК. Обмен сообщениями с сервисом AS не требует от пользователя А подтверждения своей


Аутентификация сервера пользователем

Из книги автора

Аутентификация сервера пользователем Для того чтобы пользователь А, в свою очередь, мог аутентифицировать сервер, сервер В увеличивает на единицу значение времени из запроса пользователя А и вновь шифрует его при помощи ключа KAB. Этот шифртекст и является ответом