С++ для начинающих



         

С++ для начинающих

Между выходом второго и третьего издания “С++ для начинающих” произошло довольно много событий. Одним из самых значительных стало появление международного стандарта. Он не только добавил в язык С++ новые возможности, среди которых обработка исключений, идентификация типов во время выполнения, пространство имен, встроенный булевский тип данных, новый синтаксис приведения типов, но также существенно изменил и расширил имеющиеся – шаблоны, механизм классов, поддерживающий объектную и объектно-ориентированную парадигму программирования, вложенные типы и разрешение перегруженных функций. Еще более важным событием стало включение в состав стандарта С++ обширной библиотеки, содержащей, в частности, то, что ранее называлось Standard Template Library (STL). В эту стандартную библиотеку входят новый тип string, последовательные и ассоциативные контейнеры, такие, как vector, list, map, set, и обширный набор обобщенных алгоритмов, которые могут применяться ко всем этим типам данных. Появилось не просто много нового материала, нуждающегося в описании, но фактически изменился сам способ мышления при программировании на С++. Короче говоря, можно считать, что С++ изобретен заново, поэтому третье издание нашей книги “C++ для начинающих” полностью переработано.
В третьем издании не только коренным образом поменялся наш подход к С++, изменились и авторы. Прежде всего, авторский коллектив удвоился и стал интернациональным, хотя корни его по-прежнему на североамериканском континенте: Стен (Stan) американец, а Жози (Josйe) канадка. Двойное авторство отражает деление сообщества программистов С++ на две части: Стен в настоящее время занимается разработкой приложений на C++ в области трехмерной графики и анимации для Walt Disney Feature Animation, а Жози принимает участие в развитии самого языка С++, являясь председателем рабочей группы по ядру языка в комитете по стандартизации и одним из разработчиков компилятора С++ в IBM Canada Laboratory.

Будущее С++
Реализации С++, поддерживающие стандарт, должны появиться вскоре после его публикации. Есть надежда, что после публикации стандарта изменения в С++ перестанут быть столь радикальными. Такая стабильность позволит создать сложные библиотеки, написанные на стандартном С++ и направленные на решение различных промышленных задач. Таким образом, основной рост в мире С++ ожидается в сфере создания библиотек.

Начинаем
Решение задачи
Программа на языке C++
Программа на языке C++ - 2
Программа на языке C++ - 3
Программа на языке C++ - 4
Программа на языке C++ - 5
Порядок выполнения инструкций
Директивы препроцессора
Директивы препроцессора - 2

Явное преобразование типов
Явное преобразование типов производится при помощи следующих операторов: static_cast, dynamic_cast, const_cast и reinterpret_cast. Заметим, что, хотя иногда явное преобразование необходимо, оно служит потенциальным источником ошибок, поскольку подавляет проверку типов, выполняемую компилятором. Давайте сначала посмотрим, зачем нужно такое преобразование.

Инструкции
Простые и составные инструкции
Инструкции объявления
Инструкции объявления - 2
Инструкции объявления - 3
Инструкция if
Инструкция if - 2
Инструкция if - 3
Инструкция if - 4
Инструкция if - 5

Тип указателя на функцию
Инициализация и присваивание корректны только тогда, когда список параметров и тип значения, которое возвращает функция, адресованная указателем в левой части операции присваивания, в точности соответствуют списку параметров и типу значения, возвращаемого функцией или указателем в правой части. В противном случае выдается сообщение об ошибке компиляции. Никаких неявных преобразований типов для указателей на функции не производится.

Инициализация и присваивание
Вызов
Массивы указателей на функции
Параметры и тип возврата
Параметры и тип возврата - 2
Параметры и тип возврата - 3
Указатели на функции extern "C"
Указатели на функции extern "C" - 2
Область видимости и время жизни
Область видимости

Перехват исключений
В языке C++ исключения обрабатываются в предложениях catch. Когда какая-то инструкция внутри try-блока возбуждает исключение, то просматривается список последующих предложений catch в поисках такого, который может его обработать. Catch-обработчик состоит из трех частей: ключевого слова catch, объявления одного типа или одного объекта, заключенного в круглые скобки (оно называется объявлением исключения), и составной инструкции. Если для обработки исключения выбрано некоторое catch-предложение, то выполняется эта составная инструкция.

Объекты-исключения
Объекты-исключения - 2
Раскрутка стека
Повторное возбуждение исключения
Перехват всех исключений
Перехват всех исключений - 2
Спецификации исключений
Спецификации исключений - 2
Спецификации исключений - 3
Спецификации исключений и указатели

Почленное присваивание *
Присваивание одному объекту класса значения другого объекта того же класса реализуется почленным присваиванием по умолчанию. От почленной инициализации по умолчанию оно отличается только использованием копирующего оператора присваивания вместо копирующего конструктора: newAcct = oldAcct; по умолчанию присваивает каждому нестатическому члену newAcct значение соответственного члена oldAcct. Компилятор генерирует следующий копирующий оператор присваивания

Почленное присваивание *
Почленное присваивание * - 2
Соображения эффективности *
Соображения эффективности * - 2
Соображения эффективности * - 3
Соображения эффективности * - 4
Перегруженные операторы
Перегрузка операторов
Перегрузка операторов - 2
Перегрузка операторов - 3

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

Виртуальный ввод/вывод
Виртуальный ввод/вывод - 2
Виртуальный ввод/вывод - 3
Виртуальный ввод/вывод - 4
Чисто виртуальные функции
Чисто виртуальные функции - 2
Статический вызов виртуальной функции
Статический вызов виртуальной функции - 2
Виртуальные функции и аргументы
Виртуальные функции и аргументы - 2

Файловый ввод/вывод
При чтении любого (включая пробельные) символа, кроме конца файла, мы увеличиваем переменную cnt на 1 и копируем прочитанный символ на терминал, чтобы вовремя заметить ошибки в работе программы. Встретив символ новой строки, мы записываем текущее значение cnt в inOut. Как только будет достигнут конец файла, цикл прекращается. Окончательное значение cnt выводится в файл и на экран.

Состояния потока
Состояния потока - 2
Строковые потоки
Строковые потоки - 2
Строковые потоки - 3
Состояние формата
Состояние формата - 2
Состояние формата - 3
Состояние формата - 4
Состояние формата - 5


Индикатор влажности древесины ИВМ-1
Комбинации "горячих клавиш" в пакете Archicad
AutoCAD 2005 - среда проектирования
Материаловедение и ТКМ. Курс лекций
Planix Home 3D Architect
Иллюстрированный самоучитель по OrCAD
Интегрированные сети ISDN
Арсеньева Елена - Блистательные Изгнанницы
Постимпрессионизм От Ван Гога до Гогена
ArtCAM Pro 5.5 User Guide
ObjectARX, AutoCAD. Среда программирования библиотеки C++
Borland MIDAS - средство надежной эксплуатации информационных систем
Windows XP
Windows XP -первые шаги
Программирование на Ассемблере
Основы ASP.NET 2.0
Иллюстрированный самоучитель по Mathematica
Современные технологии создания программного обеспечения
Assembler для начинающих
Справочник по Ассемблеру