Similar presentations:
Лекция 5 Перегрузка операторов ввода и вывода
1. Перегрузка операторов ввода и вывода, присваивания и индексации массива
Васильева Лидия Николаевнадоцент кафедры автоматики и управления
в технических системах
2. Перегрузка оператора вывода
3. Перегрузка оператора ввода
Основная форма перегрузки оператора ввода:istream &operator>> (istream &stream, имя_класса &объект){
// тело оператор-функции ввода
return stream;
}
Пользовательские функции ввода возвращают ссылку на поток
istream, который является потоком ввода. Первый параметр тоже
является ссылкой на поток ввода. Второй параметр — это ссылка на
объект, получающий вводимую информацию. Пользовательская
функция ввода не может быть функцией-членом класса.
4. Перегрузка ввода и вывода
#include <iostream>using namespace std;
class drob {
int x, y;
public:
drob () { x = 0; y= 0; }
drob (int i, int j) { x = i ; y = j ; }
friend ostream &operator<<(ostream &stream, drob ob);
friend istream &operator>>(istream &stream, drob &ob);
};
5. Продолжение программы
istream &operator>>(istream &stream, drob &ob){cout<<"введите числитель и знаменатель";
stream>>ob.x>>ob.y;
return stream;
}
ostream &operator<<(ostream &stream, drob ob){
stream<<ob.x<< "/" <<ob.y<<endl;
return stream;
}
int main() {
drob ob(1,5),ob1(10,35);
cin>>ob>>ob1; cout <<ob<<ob1;
return 0;
}
6. Перегрузка присваивания
Оператор присваивания обычно возвращает ссылку на свой левыйоперанд
7. Присваивание по умолчанию
• Компилятор по умолчанию компилирует для типов операторприсваивания, благодаря чему можно присваивать значения
некоторого типа переменным/ параметрам/ константам
этого типа.
• Создаваемый по умолчанию оператор присваивания просто
копирует все переменные-члены класса одну за другой (в
том порядке, в котором они объявлены в определении
класса).
8. Присваивание по умолчанию
9. Переопределение присваивания
Оператор присваивания переопределяется только как член класса.10. Продолжение программы
Оператор-функция не константая, так как меняет состояние объекта. Вкачестве параметра передается константная ссылка на
присваиваемый объект Counter, так как его не надо изменять. В
качестве результата возвращается ссылку на текущий объект.
11. Перегрузка оператора индексирования
Оператор индексирования [] позволяет интерпретировать объект какмассив. Основная форма оператор- функции перегрузки индекса
массива
тип имя_класса:: operator[] (int индекс)
{
//тело оператор-функции
}
Чтобы в инструкции присваивания оператор [] можно было
располагать как слева, так и справа от оператора присваивания, нужно
возвратить ссылку на индексируемый элемент.
programming