Бьерн Страуструп. Язык программирования С++ Второе дополненное издание



Pdf көрінісі
бет187/256
Дата11.07.2022
өлшемі2,87 Mb.
#37591
1   ...   183   184   185   186   187   188   189   190   ...   256
10.2.2 Вывод пользовательских типов 
Рассмотрим пользовательский тип данных: 
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, 


Бьерн Страуструп.
Язык программирования С++ 
 
261 
не затрагивая пользовательских программ. 
10.3 ВВОД 
Ввод во многом сходен с выводом. Есть класс istream, который реализует операцию ввода >> ("ввести 
из" - "input from") для небольшого набора стандартных типов. Для пользовательских типов можно 
определить функцию operator>>. 


Достарыңызбен бөлісу:
1   ...   183   184   185   186   187   188   189   190   ...   256




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет