Содержание
- 2. Перегрузка функций Перегрузка функций Часто бывает удобно, чтобы функции, реализующие один и тот же алгоритм для
- 3. Перегрузка функций Использование нескольких функций с одним и тем же именем, но с различными типами параметров,
- 4. Перегрузка функций Тип возвращаемого результата в разрешении не участвует. Рассмотрим примеры: int max(int, int); int max(int,
- 5. Перегрузка функций При вызове функции компилятор выбирает соответствующий типу фактических параметров вариант функции. Если точного соответствия
- 6. Перегрузка функций Если ни одного соответствия не найдено, выдается диагностическое сообщение об ошибке. Неоднозначность может появиться
- 7. Перегрузка функций Следующие функции нельзя считать перегруженными: int max(int, int); double max(int, int); long max(int, const
- 8. Перегрузка функций Следующий пример показывает неоднозначность при наличии параметров по умолчанию. int f(int a){return a;} int
- 9. Перегрузка функций Неоднозначность возникает при неопределенности преобразований, например, float f(float); double f(double); f(10); // к какому
- 10. Перегрузка функций - функции не могут быть перегруженными, если описание их параметров отличается только модификатором const
- 11. Шаблоны функций *Шаблоны функций В С++ есть мощное средство параметризации алгоритма – шаблоны функций. С помощью
- 12. Шаблоны функций Общий формат объявления шаблонной функции: template заголовок { // тело функции } - список
- 13. Шаблоны функций В общем случае список шаблона может содержать несколько типов, например, template void f() {
- 14. Шаблоны функций В качестве первого примера шаблона функции вспомним функцию swap: template void swap(Type &arg_1, Type
- 15. Шаблоны функций Вызов этой функции может быть осуществлен двумя способами: - как вызов обычной функции без
- 16. Шаблоны функций - со спецификацией параметров шаблона int a=120, b=-45; swap (a,b); Обратите внимание на то,
- 17. Шаблоны функций В качестве параметров шаблона функции могут выступать как стандартные типы, так и типы, определенные
- 18. Шаблоны функций Рассмотрим пример class Test { protected: float test; public: Test(){}; Test(float ):test(t){}; Test operator
- 19. Шаблоны функций ostream &operator { out return out; } // шаблон функции умножения template Type mult(Type
- 20. Шаблоны функций // вызов функции для пользовательского типа Test tst_1(3.4F), tst_2(-4.55F); cout Как говорилось ранее, можно
- 21. Шаблоны функций Этот шаблон может быть использован и при работе со стандартными типами данных: float f_1
- 22. Шаблоны функций Рассмотрим пример несложного шаблонного класса. template class Test { protected: Type test; public: Test(){};
- 23. Шаблоны функций Реализация составных и дружественных функций шаблонного класса: template ostream &operator &t) { out return
- 24. Шаблоны функций Объявление объектов шаблонных классов и их использование: Test tst_int_1=10, tst_int_2=200; cout Test tst_double_1(77.84), tst_double_2(4.1);
- 25. Шаблоны функций Функция в качестве возвращаемого результата Мы знаем, что функция не может вернуть в качестве
- 26. Шаблоны функций #include using namespace std; double mult(double d) { return d*2; } typedef double (*PF)(double);
- 27. Шаблоны функций PF func() { return mult; } int main() { PF ptr_fun = func(); cout
- 28. Функция main Функция, которой передается управление после запуска (вызова) программы на исполнение, должна иметь имя main.
- 29. Функция main Стандарт предусматривает два формата функции: тип main() { // ……. } тип main(int argc,
- 30. Функция main Пример вызова функции main с параметрами из командной строки: d:\CPP\program_main.exe one two three
- 31. Директивы препроцессора * Директивы препроцессора Препроцессором называется первая фаза компиляции. Инструкции (команды) препроцессора называются директивами. Они
- 32. Директивы препроцессора Поиск указанного файла начинается со стандартного каталога include, имеющегося в любой реализации языка. После
- 33. Директивы препроцессора Заголовочные файлы обычно имеют расширение h и могут содержать: - определение типов, встроенных функций,
- 34. Директивы препроцессора В заголовочных файлах не должно быть определение функций и данных. Их принято выносить в
- 35. Директивы препроцессора #include”file_name.h” file_name_main.cpp Файл основной программы, содержащий функцию main file_name_1.cpp file_name_2.cpp …………………………. file_name_n.cpp Файлы реализации
- 36. Директивы препроцессора Директива #define Директива define определяет подстановку в тексте программы. Она используется для определения: -
- 37. Директивы препроцессора - макросов, которые выглядят как функции, но реализуются подстановкой из текста в текст программы:
- 38. Директивы препроцессора Например, для описанного макроса вызов cout приведет к получению числа 6, для правильного ответа
- 39. Директивы препроцессора - символов, управляющих условной трансляцией. Они используются совместно с директивами #ifdef и #ifndef. Общий
- 40. Директивы препроцессора Имена, объявляемые через директиву define рекомендуется писать прописными символами, чтобы зрительно отличать их от
- 41. Директивы препроцессора Директивы условной трансляции Директивы условной трансляции #if, #ifdef, #ifndef применяются для того, чтобы исключить
- 42. Директивы препроцессора Формат директивы #if: #if константное_выражение ….. [ #elif константное_выражение ] ….. [ #elif константное_выражение
- 43. Директивы препроцессора Исключаемые блоки могут содержать как описания, так и исполняемые операторы. Пример условно исключения различных
- 44. Директивы препроцессора В константных выражениях может использоваться проверка, определена ли константа с помощью директивы difine, например:
- 45. Директивы препроцессора И еще одно применение директив условной трансляции – временное комментирование фрагмента кода. Иногда используется
- 46. Предопределенные макросы Например, макрос __splusplus определен, если программа компилируется в среде С++. #ifdef __cplusplus cout #else
- 47. Предопределенные макросы Другие макросы: - __DATE__ - содержит строку с текущей датой (месяц, день, год), например,
- 48. Предопределенные макросы - __LINE__ - текущая строка исходного текста; - __TIME__ - текущее время.
- 49. Предопределенные макросы
- 60. Скачать презентацию