Стефан Дэвис - С++ для чайников .

Тут можно читать онлайн Стефан Дэвис - С++ для чайников . - бесплатно полную версию книги (целиком) без сокращений. Жанр: sci_tech, издательство Издательский дом Вильямс. Компьютерное издательство Диалектика, год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    С++ для чайников .
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом Вильямс. Компьютерное издательство Диалектика
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    0-7645-6852-3, 978-5-8459-0723-3
  • Рейтинг:
    4/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Стефан Дэвис - С++ для чайников . краткое содержание

С++ для чайников . - описание и краткое содержание, автор Стефан Дэвис, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
empty-line
1
empty-line
4

С++ для чайников . - читать онлайн бесплатно полную версию (весь текст целиком)

С++ для чайников . - читать книгу онлайн бесплатно, автор Стефан Дэвис
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Name & operator=( Name & s ) { return *this ; }

}

Присвоения наподобие приведённого далее ( при таком определении ) будут запрещены [ 18 ] .

void fn( Name & n )

{

Name newN ;

newN = n ; /* Ошибка компиляции — функция не */

/* имеет права доступа к operator=( ) */

}

Такая защита от копирования спасает вас от перегрузки оператора присвоения, но при этом снижает гибкость вашего класса.

Если ваш класс использует какиелибо ресурсы например память из кучи вы - фото 297

«Если ваш класс использует какие-либо ресурсы, например, память из кучи, вы обязаны либо разработать удовлетворительные оператор присвоения и конструктор копирования, либо сделать их защищёнными для предотвращения их использования.»

[ Советы ]

______________

18В определении тела защищённых конструктора копирования и оператора присвоения нет необходимости, поскольку они никогда не будут вызываться. Таким образом, вы можете просто указать их в защищённой части объявления класса, никак их не реализуя. — Прим. ред.

_________________

276 стр. Часть 5. Полезные особенности

Глава 24. ИСПОЛЬЗОВАНИЕ ПОТОКОВ ВВОДА-ВЫВОДА...277

ОГЛАВЛЕНИЕ

В этой главе...

►Как работают потоки ввода-вывода 277

►Знакомство с подклассами fstream 278

►Прямое чтение из потока 282

►Что такое endl 284

►Подклассы strstream 285

►Работа с манипуляторами 287

Все программы, которые встречались в книге, читали информацию из объекта сin и выводили её в объект cout . Может, это и не интересовало вас, но эта технология ввода-вывода представляет собой подмножество того, что известно под названием потоков ввода-вывода.

В этой главе потоки ввода-вывода описываются более детально. Но должен предупредить вас: это слишком большая тема, чтобы всесторонне осветить её в одной главе; ей посвящены отдельные книги. К счастью для всех нас, написание подавляющего большинства программ не требует глубоких знаний в области потоков ввода-вывода.

►Как работают потоки ввода-вывода...277

Потоки ввода-вывода основаны на перегруженных операторах operator>>( ) и operator<<( ) . Объявления этих операторов находятся в заголовочном файле iostream , который мы включаем во все программы в данной книге. Коды этих функций находятся в стандартной библиотеке, с которой компонуются ваши программы. Вот листинг некоторых прототипов из файла iostream .

/* Операторы для ввода: */

istream & operator>>( istream & source , char* pDest ) ;

istream & operator>>( istream & source , int & dest ) ;

istream & operator>>( istream & source , char & dest ) ;

/* ...и так далее... */

/* Операторы для вывода: */

istream & operator<<( ostream & dest , char* pSource ) ;

istream & operator<<( ostream & dest , int & source ) ;

stream & operator<<( ostream & dest , char & source ) ;

/* ...и так далее... */

Оператор operator>>( ) называется оператором извлечения из потока, а operator<<( ) — оператором вставки в поток. Класс istream является базовым для ввода информации из файла или устройства ввода типа клавиатуры. При запуске программы на выполнение С++ открывает объект cin класса istream . Аналогично, ostream представляет собой базовый класс для файлового вывода, a cout — объект класса ostream по умолчанию.

_________________

277 стр. Глава 24. Использование потоков ввода-вывода

Рассмотрим что получится если написать следующий код имеющийся на - фото 298

«Рассмотрим, что получится, если написать следующий код ( имеющийся на прилагаемом компакт-диске ).»

[ Диск ]

/* DefaultStreamOutput */

#include

#include

using namespace std ;

void fn( ostream & out )

{

out << "Меня зовут Стефан\n" ;

}

int main( int nNumberofArgs , char* pszArgs[ ] )

{

setlocale ( LC_ALL , ".1251" ) ; /* печать русских текстов */

fn( cout ) ;

system( "PAUSE" ) ; return 0 ;

}

Программа передаёт функции fn поток cout Функция использует оператор - фото 299

Программа передаёт функции fn( ) поток cout . Функция использует оператор operator<<( ) . Сначала С++ определит, что левый аргумент имеет тип ostream , а правый — тип char* . Вооружённый этими знаниями, он найдёт прототип функции operator<<( ostream & , char* ) в заголовочном файле iostream . Затем С++ вызовет функцию вставки в поток для char* , передавая ей строку "Меня зовут Стефан\n" и объект cout в качестве аргументов. Другими словами, он вызовет функцию operator<<( cout , "Меня зовут Стефан\n" ) . Функция для вставки char* в поток, которая является частью стандартной библиотеки С++, выполнит необходимый вывод.

Но откуда компилятору известно, что cout является объектом класса ostream ? Этот и ещё несколько глобальных объектов объявлены в файле iostream.h ( их список приведён в табл. 24.1 ). Эти объекты автоматически конструируются при запуске программы, до того как main( ) получает управление.

Таблица 24.1. Стандартные потоки ввода-вывода

_________________

Объект — Класс — Назначение

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

cin — istream — Стандартный ввод

cout — ostream — Стандартный вывод

cerr — ostream — Стандартный небуферизованный вывод сообщений об ошибках

clog — ostream — Стандартный буферизованный вывод сообщений об ошибках

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

►Знакомство с подклассами fstream...278

Подклассы ofstream , ifstream и fstream объявлены в заголовочном файле fstream.h и обеспечивают потоки ввода-вывода в дисковые файлы. Эти три класса предоставляют множество функций для управления вводом и выводом, многие из которых наследуются от ostream и istream . Полный список этих функций вы можете найти в документации к компилятору, а здесь я приведу только несколько из них, чтобы вы могли с чего-то начать.

_________________

278 стр. Часть 5. Полезные особенности

Класс ofstream , который используется для файлового вывода, имеет несколько конструкторов; наиболее часто применяется следующий:

ofstream::ofstream( char* pFileName ,

int mode = ios::out ,

int prot = filebuff::openprot ) ;

Первый аргумент этого конструктора — указатель на имя открываемого файла. Второй и третий аргументы определяют, как именно должен быть открыт файл. Корректные значения аргумента mode приведены в табл. 24.2, a prot — в табл. 24.3. Эти значения являются битовыми полями, к которым применяется оператор побитового ИЛИ ( классы ios и filebuff — родительские по отношению к ostream ).

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стефан Дэвис читать все книги автора по порядку

Стефан Дэвис - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




С++ для чайников . отзывы


Отзывы читателей о книге С++ для чайников ., автор: Стефан Дэвис. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x