
- •История развития языков программирования
- •Основные свойства объектно-ориентированных языков программирования
- •6. Использование спецификатора void
- •Преобразование стандартных типов данных.
- •Новые операции new, delete, операция расширения области видимости
- •Объявление функций. Аргументы по умолчанию
- •Перегрузка функций
- •Новые возможности по сравнению с Си
- •Объектно-ориентированные особенности языка
- •13. Перегрузка операций
- •14. Дружественные функции
- •15. Сходства и различия классов, структур и объединений.
- •Отличия структур и объединений от классов
- •16. Классы и объекты. Определение класса и области видимости. Опережающее объявление класса
- •17. Использование спецификатора класса памяти static. Статические компоненты класса
- •18. Константные объекты и константные методы
- •19. Неявный указатель this
- •20. Указатели на член класса
- •21. Локальные и вложенные классы
- •22. Специальный вид методов класса - конструкторы и деструкторы.
- •23. Классы, содержащие объекты других классов
- •24. Создание объектов с различным временем жизни
- •25. Массивы объектов класса
- •26. Особенности копирования объектов
- •27. Заготовка класса без наследников
- •28. Пример вектора с неповерхностным копированием.
- •29. Излишнее копирование. Конструктор копии. Операции присваивания.
- •1. Излишнее копирование
- •Конструктор копирования
- •3. Операции присваивания
- •30. Преобразование типов. Стандартные преобразования. Явное преобразование типов
- •Преобразования указателей и ссылок
- •Явные преобразования типов
- •Неявное преобразование типа
- •31. Преобразования абстрактных типов данных (преобразование типов данных, созданных программистом)
- •32. Наследование классов
- •33. Доступ к наследуемым членам класса
- •34. Стандартные преобразования типов при наследовании
- •35. Инициализация объекта порожденного класса. Конструктор копии. Операция присваивания.
- •3. Операции присваивания
- •37. Виртуальные функции. Объявления виртуальных функций. Чисто виртуальные функции
- •Методы(функции)
- •38. Таблица виртуальных функций. Случаи, когда вызов виртуальной функции не будет виртуальным. Виртуальные деструкторы
- •39. Ввод-вывод файлов. Потоки ввода-вывода. Библиотека ввода-вывода (iostream). Группы классов библиотеки ввода вывода
- •40. Краткая характеристика иерархии классов производных от conbuf.
- •Класс conbuf (constrea.H)
- •Функции-элементы
- •41. Иерархия классов производных от ios
- •42. Состояния потока. Ошибки потоков.
- •С каждым потоком связан набор флагов, которые управляют форматированием потока. Они представляют собой битовые маски, которые определены в классе ios как данные перечисления. Манипуляторы
- •Шаблоны и наследование. Шаблоны и конфигурация компиляторов. Достоинства и недостатки шаблонов.
- •Применение try, catch, throw
- •47. Обработка исключительных ситуаций. Обработка завершения. Обработка структурных исключений, заявление исключения, фильтрующие выражение. Исключительные ситуации
- •Обработка исключительных ситуаций
- •48. Стратегии взаимодействия объектов в программе. Программа как система взаимодействующих объектов. Система объектов, управляемых сообщениями
- •1. Программа, как система взаимодействия объектов.
- •49. Элементы объектно-ориентированного анализа и объектно-ориентированного проектирования. Диаграммы классов. Отношения классов: ассоциация, наследование, агрегация, использование.
- •50. Элементы объектно-ориентированного анализа и объектно-ориентированного проектирования. Диаграмма объектов: назначение, отношение между объектами
- •51. Элементы объектно-ориентированного анализа и объектно-ориентированного проектирования. Диаграмма объектов: назначение, отношение между объектами
Объявление функций. Аргументы по умолчанию
Функция - это именованная часть программы, к которой можно обращаться из других частей программы столько раз, сколько потребуется.
Объявление функций
В языке С объявление функций до использования было желательным, но не обязательным. В С++ все функции перед использованием должны быть объявлены с полным списком формальных параметров и с указанием типа возвращаемого значения. Компилятор языка С++ очень строго следит за соответствием типов, выполняет необходимые преобразования типов фактических параметров к типам формальным, если возможно, а если не возможно, то выдает сообщение об ошибке.
Объявление функции в виде f() в С++ эквивалентно f(void). В языке С f() говорило о том, что функция может иметь любое количество параметров.
Аргументы по умолчанию
При объявлении функции в С++ одному или нескольким параметрам может быть назначено значение по умолчанию.
void Func(double a, char c=’*’, int i=2);
Func(10.6);
Func(10.6, ‘-’);
Func(10.6, ‘+’,3);
Func 10.6, , 3) //ошибка
Параметры, которым дается значение по умолчанию, должны быть последовательными, а при вызове не должно быть пропуска параметров. Значения по умолчанию должны быть указаны лишь один раз либо в прототипе функций, либо при ее определении. К моменту вызова функции с неполным списком аргументов значения по умолчанию должно быть определено и видимо в области видимости функции.
Перегрузка функций
В С++ была разработана своя библиотека ввода-вывода, которая называется iostream. Все необходимое расположено в заголовочном файле iostream.h. Стандартный ввод и вывод связаны при помощи двух потоков: cin и cout. Для осуществления ввода-вывода перегружаются две операции: >> - для ввода информации и << - для вывода. Данные операции в заголовочном файле определены для всех встроенных типов данных и их использование жестко контролируется компилятором.
#include <iostream.h>
main()
{
double a,b,c;
cout <<”Введите А и В”;
cin >>a>>b;
cout <<”Значение суммы”<<a<<”+”<<b<<”=”<<a+b;
}
В этом примере одни и те же операции используются для ввода и вывода величин типа double и символьных строк. Компилятор сам определяет, какую функцию вызвать для реализации ввода и вывода, используя информацию о типах в объявляемых данных.
Цепочечная запись возможна, так как результат отдельной операции является ссылкой на объект cout или ссылкой на объект cin.
Использование функции в Си и программе на С++
Нововведениями Си++ в сравнении с Си являются: поддержка объектно-ориентированного программирования; поддержка обобщённого программирования через шаблоны; дополнительные типы данных; исключения; пространства имён; встраиваемые функции; перегрузка операторов; перегрузка имён функций; ссылки и операторы управления свободно распределяемой памятью; дополнения к стандартной библиотеке.
Си++: разработан как универсальный язык со статическими типами данных, эффективностью и переносимостью языка Си. разработан так, чтобы непосредственно и всесторонне поддерживать множество стилей программирования (процедурное программирование, абстракцию данных, объектно-ориентированное программирование и обобщённое программирование). разработан так, чтобы давать программисту свободу выбора, даже если это даёт ему возможность выбирать неправильно. разработан так, чтобы максимально сохранить совместимость с Си, тем самым делая возможным лёгкий переход от программирования на Си. избегает таких особенностей, которые зависят от платформы или не являются универсальными. не накладывает никакой избыточной нагрузки на программу, не использующую какие-либо возможности. разработан так, чтобы не требовать слишком усложнённой среды программирования.
Стандарт Си++ содержит нормативную ссылку на стандарт Си от 1990 года и не определяет самостоятельно те функции стандартной библиотеки, которые заимствуются из стандартной библиотеки Си. Кроме того, существует огромное количество библиотек Си++, не входящих в стандарт. В программах на Си++ можно использовать многие библиотеки Си.