Перегрузка операторов ввода и вывода, присваивания и индексации массива
Перегрузка оператора вывода
Перегрузка оператора ввода
Перегрузка ввода и вывода
Продолжение программы
Перегрузка присваивания
Присваивание по умолчанию
Присваивание по умолчанию
Переопределение присваивания
Продолжение программы
Перегрузка оператора индексирования
Перегрузка оператора индексирования
Перегрузка индексации
376.78K
Category: programmingprogramming

Лекция 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 индекс)
{
//тело оператор-функции
}
Чтобы в инструкции присваивания оператор [] можно было
располагать как слева, так и справа от оператора присваивания, нужно
возвратить ссылку на индексируемый элемент.

12. Перегрузка оператора индексирования

13. Перегрузка индексации

English     Русский Rules