Cтраница 4
Функция-элемент eof класса ios определяет, достигнут ли признак конца файла в заданном потоке. Признак конца файла устанавливается, когда попытка считывания данных оканчивается неудачей. [46]
Функция-элемент может быть объявлена статической, если она не обращается к не-статическим элементам класса. В отличие от не-статиче-ских, статическая функция-элемент не имеет указателя this. Это происходит потому, что статические элементы данных и статические элементы-функции существуют независимо от объектов класса. [47]
Функция-элемент может быть статической, если она не обращается к элементам класса. [48]
Функция-элемент operator производит проверку на самоприсваивание. Если это не самоприсваивание, тогда функция-элемент использует delete для освобождения памяти, первоначально отведенной под массив-приемник; копирует из массива-источника значение size в size массива-копии; использует new для выделения места под массив-копию и присваевает указатель, возвращаемый new, элементу ptr приемника; вызывает assert для проверки успешности вызова new; использует цикл for для копирования элементов массива-источника в массив-приемник. Вне зависимости от того, самоприсваивание это или нет, функция-элемент возвращает после вызова свой объект ( т.е. this) как константную ссылку; это разрешает конкатенацию присваиваний Array, таких, как xyz. Если бы контроль самоприсваивания был пропущен, функция-элемент не могла бы начинаться с освобождения памяти массива-приемника. Поскольку при самоприсвоении он также и массив-источник, этот массив не должен быть разрушен. [49]
Функция-элемент print класса Hourly Worker представляет собой пример переопределения функции-элемента базового класса в производном классе. Часто функции-элементы базового класса переопределяются в производном классе для того, чтобы придать последнему большие функциональные возможности. Переопределяемые функции иногда вызывают базовую функцию для выполнения части своей задачи. Функция print производного класса, кроме того, выводит на печать и заработную плату сотрудника. [50]
![]() |
Использование функций-элементов get, put и eof. [51] |
Функция-элемент get без аргументов вводит один символ из указанного потока ввода ( даже если этот символ - пробельный) и возвращает его в качестве своего значения. Эта версия функции get возвращает макрос EOF, когда в потоке ввода встречается конец файла. [52]
![]() |
Ввод строки символов из потока cin при помощи операции извлечения из потока и. [53] |
Функция-элемент getline работает подобно третьей версии функции-элемента get, также добавляя нуль-символ в конец считанной в символьный массив строки. Функция getline удаляет символ-ограничитель из потока, но не сохраняет его в массиве. Программа на рис. 21.14 демонстрирует использование функции-элемента getline при вводе строки текста. [54]
![]() |
Ввод символов при помощи функции-элемента getline. [55] |
Функция-элемент putback возвращает последний символ, полученный функцией get из потока ввода, обратно в поток. Эта функция удобна для использования в прикладных программах, которые просматривают входной поток в поисках фрагмента, начинающегося со специфического символа. Когда такой символ обнаруживается, приложение возвращает его обратно в поток, чтобы нужный фрагмент данных затем был считан целиком. [56]
Функция-элемент peek возвращает следующий символ из потока ввода, но не удаляет его из потока. [57]
![]() |
Неформатируемый ввод / вывод с использованием функций-элементов. [58] |
Функция-элемент read вводит в символьный массив определенное количество символов. Если прочитано меньшее количество символов, чем требовалось, устанавливается бит failbit. [59]
![]() |
Вывод числа с выравниванием по ширине и принудительным знаком плюс. [60] |