Объектно-ориентированное программирование. Богомолов А - 22 стр.

UptoLike

22
Применение :
Void main ()
My m1(1,2), m2(10,20);
My m3 = 1+m1 ;
My m4 = m2+2;
Сложные выражения с объектами
Под сложным выражением понимают множество арифметических операций,
выполненных в одном операторе.
Пусть : в сл. My перегружен + - * /
Тогда можно писать следующее выражение:
My m1,m2,m3;
My obj = m1+m2*m3-5m3+6*m4-6*(m1/m3)*m2;
Такие выражения нормально работают, если операторы перегружены таким образом, что
возвращают ссылку на тип.
Для класса матриц обязательная демонстрация выражения с матрицами.
Ссылка на тип
Тип & operator @ (…)
Перегрузка потоковых операций ввода/вывода
Cin » имя_ переменной; - ввод переменной из потока cin
Cin – стандартны поток ввода (клавиатура, консоль на входе)
Cout « имя _переменной; - вывод в поток
Cout – стандартный поток вывода (монитор, консоль на выходе)
В операциях ввода/вывода участвуют в перегрузке операции побитового сдвига
влево и вправо » и «.
Перегруженный оператор ввода возвращает ссылку на поток iostream, поэтому в
1-
ом операторе можно вводить несколько переменных.
Оператор ввода определен для всех базовых типов и модификаций (unsigned,
short, long).
Процесс ввода/вывода без форматирования происходит в два этапа:
1. компилятор читает переменные и тип, т.е. тип переменной известен.
2. когда идет операция ввода/вывода вызывается нужный перегруженный оператор в
соответствии с типом переменной.
Операторы
ввода/вывода:
Хотим применить те же самые операторы « и » для объектов абстрактных классов.
Хотим: date d1, d2;
Cin » d1 » d2
Cout « d1 « “…” « d2;
Т.е. хотим применить оператор ввода/вывода вместо функции членов класса input и
output.
Для этого требуется перегрузить потоковые операции в абстрактном классе.
1.
friend
cin »
cout «
1терм-имя потока стандарт. ( в классе ivs), т.е. левым термом не может быть объект
абстрактного класса. Поэтому потоковые операции в абстрактном классе должны
иметь более одного параметра.
                                         22

 Применение :
 Void main ()
 My m1(1,2), m2(10,20);
 My m3 = 1+m1 ;
 My m4 = m2+2;

  Сложные выражения с объектами
         Под сложным выражением понимают множество арифметических операций,
выполненных в одном операторе.
Пусть : в сл. My перегружен + - * /
Тогда можно писать следующее выражение:
My m1,m2,m3;
My obj = m1+m2*m3-5m3+6*m4-6*(m1/m3)*m2;
Такие выражения нормально работают, если операторы перегружены таким образом, что
возвращают ссылку на тип.
Для класса матриц обязательная демонстрация выражения с матрицами.
Ссылка на тип
Тип & operator @ (…)

 Перегрузка потоковых операций ввода/вывода
 Cin » имя_ переменной; - ввод переменной из потока cin
 Cin – стандартны поток ввода (клавиатура, консоль на входе)
 Cout « имя _переменной; - вывод в поток
 Cout – стандартный поток вывода (монитор, консоль на выходе)
         В операциях ввода/вывода участвуют в перегрузке операции побитового сдвига
 влево и вправо » и «.
         Перегруженный оператор ввода возвращает ссылку на поток iostream, поэтому в
 1-ом операторе можно вводить несколько переменных.
         Оператор ввода определен для всех базовых типов и модификаций (unsigned,
 short, long).
         Процесс ввода/вывода без форматирования происходит в два этапа:
 1. компилятор читает переменные и тип, т.е. тип переменной известен.
 2. когда идет операция ввода/вывода вызывается нужный перегруженный оператор в
 соответствии с типом переменной.
 Операторы ввода/вывода:
 Хотим применить те же самые операторы « и » для объектов абстрактных классов.
 Хотим: date d1, d2;
           Cin » d1 » d2
           Cout « d1 « “…” « d2;
 Т.е. хотим применить оператор ввода/вывода вместо функции членов класса input и
 output.
 Для этого требуется перегрузить потоковые операции в абстрактном классе.
 1.      friend
   cin »
   cout «
   1терм-имя потока стандарт. ( в классе ivs), т.е. левым термом не может быть объект
    абстрактного класса. Поэтому потоковые операции в абстрактном классе должны
    иметь более одного параметра.