🗊 Презентация Друзья.Потоковые ввод,вывод.Массив объектов

Категория: Образование
Нажмите для полного просмотра!
Друзья.Потоковые ввод,вывод.Массив объектов, слайд №1 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №2 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №3 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №4 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №5 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №6 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №7 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №8 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №9 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №10 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №11 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №12 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №13 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №14 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №15 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №16 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №17 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №18 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №19 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №20 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №21 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №22 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №23 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №24 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №25 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №26 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №27 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №28 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №29 Друзья.Потоковые ввод,вывод.Массив объектов, слайд №30

Содержание

Вы можете ознакомиться и скачать презентацию на тему Друзья.Потоковые ввод,вывод.Массив объектов. Доклад-сообщение содержит 30 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


П.7 Дружественность Пример. Пусть некоторая внешняя функция Show выводит строку в красивом виде - в ‘*’: void Show( String &s) {int I, k = s.n; for(i...
Описание слайда:
П.7 Дружественность Пример. Пусть некоторая внешняя функция Show выводит строку в красивом виде - в ‘*’: void Show( String &s) {int I, k = s.n; for(i = 0; i < k + 4; i++) cout

Слайд 2


Очевидно, что задать такую функцию Очевидно, что задать такую функцию компилятор не позволит, так как будет нарушена инкапсуляция член-данных len и...
Описание слайда:
Очевидно, что задать такую функцию Очевидно, что задать такую функцию компилятор не позволит, так как будет нарушена инкапсуляция член-данных len и line.

Слайд 3


Если все-таки необходимо Если все-таки необходимо разрешить некоторой не член- функции (внешней функции) использовать член-данные из части private...
Описание слайда:
Если все-таки необходимо Если все-таки необходимо разрешить некоторой не член- функции (внешней функции) использовать член-данные из части private какого-либо класса, ее можно объявить дружественной этому классу.

Слайд 4


Формат объявления class String{ friend void Show(String &, int, int); // в любом месте определения класса char *line; … };
Описание слайда:
Формат объявления class String{ friend void Show(String &, int, int); // в любом месте определения класса char *line; … };

Слайд 5


Кто они друзья? 1. внешняя по отношению к классу функция, как в нашем примере; 2. член-функция известного на данный момент другого класса Например,...
Описание слайда:
Кто они друзья? 1. внешняя по отношению к классу функция, как в нашем примере; 2. член-функция известного на данный момент другого класса Например, функция f – член-функция класса А class A { … тип_возвр_знач f(аргументы); ...}; class B { … friend тип_возвр_знач A :: f(аргументы); // сама f определяется в классе A ... };

Слайд 6


Друг 3 3. другой определенный (или объявленный) на данный момент класс class A; // упреждающее объявление class B{ friend class A; .... }; Такое...
Описание слайда:
Друг 3 3. другой определенный (или объявленный) на данный момент класс class A; // упреждающее объявление class B{ friend class A; .... }; Такое объявление означает, что всем член- функциям класса A разрешается доступ ко всем член-данным класса B, но не наоборот

Слайд 7


Замечание1 Дружественность нужно использовать оптимально, так как она нарушает принцип инкапсуляции.
Описание слайда:
Замечание1 Дружественность нужно использовать оптимально, так как она нарушает принцип инкапсуляции.

Слайд 8


Замечание 2 Операции можно перегружать и как внешние дружественные классу функции. В этом случае одноместная операция имеет один аргумент - объект...
Описание слайда:
Замечание 2 Операции можно перегружать и как внешние дружественные классу функции. В этом случае одноместная операция имеет один аргумент - объект класса, а двуместная - 2: объект класса и второй операнд.

Слайд 9


Пример. Перегрузка операции +, как внешней дружественной функции class String{ ... friend String operator + (String &, String &); ... };
Описание слайда:
Пример. Перегрузка операции +, как внешней дружественной функции class String{ ... friend String operator + (String &, String &); ... };

Слайд 10


String operator + (String &s, String &t) String operator + (String &s, String &t) { String z(s.len + t.len + 1); // определим локальную переменную //...
Описание слайда:
String operator + (String &s, String &t) String operator + (String &s, String &t) { String z(s.len + t.len + 1); // определим локальную переменную // суммарной длины, пустую строку strcpy(z.line, s.line); strcat(z.line, t.line); z.len = strlen(z.line); return z; }

Слайд 11


п8. Перегрузка операций потокового ввода >> и вывода
Описание слайда:
п8. Перегрузка операций потокового ввода >> и вывода

Слайд 12


ostream В классе ostream определена операция
Описание слайда:
ostream В классе ostream определена операция

Слайд 13


cout - это стандартное имя объекта - потока cout - это стандартное имя объекта - потока вывода, т.е. в системе есть описание ostream cout; Поэтому...
Описание слайда:
cout - это стандартное имя объекта - потока cout - это стандартное имя объекта - потока вывода, т.е. в системе есть описание ostream cout; Поэтому операцию cout

Слайд 14


Например, пусть задана переменная x Например, пусть задана переменная x int x = 1185; Цепочка вывода cout
Описание слайда:
Например, пусть задана переменная x Например, пусть задана переменная x int x = 1185; Цепочка вывода cout

Слайд 15


Это важно Оператор, определенный как член- функция класса, первым операндом всегда имеет объект класса, т.е. *this. Первым операндом операции
Описание слайда:
Это важно Оператор, определенный как член- функция класса, первым операндом всегда имеет объект класса, т.е. *this. Первым операндом операции

Слайд 16


Друзья.Потоковые ввод,вывод.Массив объектов, слайд №16
Описание слайда:

Слайд 17


istream В классе istream определена перегруженная операция >> для базовых типов данных class istream{ ... public: istream & operator >>(char *);...
Описание слайда:
istream В классе istream определена перегруженная операция >> для базовых типов данных class istream{ ... public: istream & operator >>(char *); istream & operator >>(char &); istream & operator >>(long int &); istream & operator >>(double &); istream & operator >> (float &); ..... };

Слайд 18


Имеется определение стандартного Имеется определение стандартного имени cin: istream cin; Если определить переменную int x; то операция cin >> x;...
Описание слайда:
Имеется определение стандартного Имеется определение стандартного имени cin: istream cin; Если определить переменную int x; то операция cin >> x; означает, что введенное число со стандартного устройства ввода передается в переменную x. В этой операции cin - первый операнд, x – второй операнд. Также можно писать цепочки ввода.

Слайд 19


int x; float d; char c; int x; float d; char c; Цепочка ввода cin >> x >> d >> c; это последовательное применение операции >> с аргументами разного...
Описание слайда:
int x; float d; char c; int x; float d; char c; Цепочка ввода cin >> x >> d >> c; это последовательное применение операции >> с аргументами разного типа:

Слайд 20


>> для класса String class String{ ... public: ... friend istream & operator >>(istream &r, String &s) { char buf[80]; cout
Описание слайда:
>> для класса String class String{ ... public: ... friend istream & operator >>(istream &r, String &s) { char buf[80]; cout

Слайд 21


Использование String s1, s2(30); cin >> s1 >> s2;
Описание слайда:
Использование String s1, s2(30); cin >> s1 >> s2;

Слайд 22


Замечание У второго аргумента операции вывода > этот аргумент обязательно должен иметь тип & - ссылка
Описание слайда:
Замечание У второго аргумента операции вывода > этот аргумент обязательно должен иметь тип & - ссылка

Слайд 23


п9. Массивы объектов Массивы объектов определяются обычным образом: String s[3]; 3 объекта в статической области, каждый захватывает память...
Описание слайда:
п9. Массивы объектов Массивы объектов определяются обычным образом: String s[3]; 3 объекта в статической области, каждый захватывает память конструктором по умолчанию по 80 байтов для пустой строки

Слайд 24


Объекты, составляющие массив, конструктором Объекты, составляющие массив, конструктором c аргументами инициализируются каждый по отдельности,...
Описание слайда:
Объекты, составляющие массив, конструктором Объекты, составляющие массив, конструктором c аргументами инициализируются каждый по отдельности, например String s1[3] = {String(“Иванов”), String(“Петров”)}; Если аргумент один, как в примере, то запись можно сократить String s1[3] = {“Иванов”,”Петров”}; обратите внимание: элемент s1[2] инициализируется по умолчанию пустой строкой.

Слайд 25


Конструкторы можно комбинировать: Конструкторы можно комбинировать: String ss[3]={12,20, “С++”}; Можно определить динамический массив: String *sp =...
Описание слайда:
Конструкторы можно комбинировать: Конструкторы можно комбинировать: String ss[3]={12,20, “С++”}; Можно определить динамический массив: String *sp = new String[4]; Массив из 4 объектов в динамической области. Для каждого объекта память по указателю line также в динамической области берется конструктором по умолчанию по 80 байтов.

Слайд 26


Запомните! Нельзя явно инициализировать массив объектов, определенных в динамической области. Для таких случаев и должен быть предусмотрен...
Описание слайда:
Запомните! Нельзя явно инициализировать массив объектов, определенных в динамической области. Для таких случаев и должен быть предусмотрен конструктор по умолчанию. String *sp = new String [5]= {10,30,”Что такое?”, “Нельзя так инициализировать?!”,33}; // Да, так нельзя!!!

Слайд 27


Использование массивов String s1[3] = {String(“Иванов”), String(“Петров”)}; String *sp = new String[4]; String s[3]; String ss[3] = {12,20, “С++”};...
Описание слайда:
Использование массивов String s1[3] = {String(“Иванов”), String(“Петров”)}; String *sp = new String[4]; String s[3]; String ss[3] = {12,20, “С++”}; s1[1].Print(); // вывод ”Петров” sp[0] = ss[2]; // Работает перегруженная // операция ‘=’ : sp[0] = ”C++” s1[1] [0] = ’В’;// ‘Петров’ превратится в ‘Ветров’ s[0] = s1[0] + s1[0]; // вместо пустой строки s[0] получим два ‘Иванов’-ых, то есть “ИвановИванов”

Слайд 28


Освобождение памяти При выходе из функции память для массивов s, s1 и ss будет освобождаться в 2 этапа - сначала деструктором класса String для...
Описание слайда:
Освобождение памяти При выходе из функции память для массивов s, s1 и ss будет освобождаться в 2 этапа - сначала деструктором класса String для каждого элемента, затем стандартным деструктором от локальных полей len, line.

Слайд 29


Ох уж эта память! Однако для массива объектов, определенного в динамической области, надо явно освободить память при выходе из функции операцией...
Описание слайда:
Ох уж эта память! Однако для массива объектов, определенного в динамической области, надо явно освободить память при выходе из функции операцией delete [] sp; В этом случае освобождение происходит в 3 этапа: - деструктором класса String, - операцией delete от полей line и len каждого элемента массива и, наконец, - стандартным деструктором от поля sp. Если этот оператор не задать, то будет освобождена память только от ячейки sp.

Слайд 30


Решение Complex:: operator String() {char r1[25],r2[10]; sprintf(r1,"%7.2f",re); sprintf(r2,"%7.2f",im); strcat(r1," +...
Описание слайда:
Решение Complex:: operator String() {char r1[25],r2[10]; sprintf(r1,"%7.2f",re); sprintf(r2,"%7.2f",im); strcat(r1," + i*"); strcat(r1,r2); String *s=new String(r1); return *s; }



Похожие презентации
Mypresentation.ru
Загрузить презентацию