-
Notifications
You must be signed in to change notification settings - Fork 0
CPP 01. Структура программы на языках C и CPP. Функции C и CPP. Перегрузка функций в CPP. Параметры функций по умолчанию.
Dmitriy Pisarenko edited this page Sep 7, 2023
·
4 revisions
- Набор файлов, содержимым которых может являться различные объявления и определения (функций, переменных и т.п.), директивы препроцессора.
- Программа на C/C++ состоит из одной или более подпрограмм.
- Функция в языке C/C++ должна иметь свое имя, возвращаемый тип, типы принимаемых параметров и тело функции. Функцию можно сначала объявить (не описывать тело), а лишь потом определить (повторить объявление, но уже с описанием тела функции). Объявлений может быть сколько угодно, определение только одно.
- Главная функция –
main
. Должна обязательно быть, не может вызывать саму себя. - Файлы компилируются раздельно. Механизм раздельной компиляции заключается в том, чтобы получить исполняемый файл в два этапа (этап компиляции и линковки).
- На этапе компиляции каждый файл с исходным кодом компилируется независимо, в результате чего из этого файла получается объектный модуль.
- На этапе линковки объектные модули соединяются в один исполняемый файл с помощью линковщика(компоновщика). Кроме того, на этом этапе могут подключаться библиотеки, если таковые используются.
- Чтобы нормально собрать программу, создают заголовочные файлы, где содержатся константы и объявления переменных и функций (без определения).
- Так же в программах, написанных на языке C/C++ помимо файлов с исходным кодом используются заголовочные файлы, которые содержат объявление функций (которые будут позже определены в файле с исходным кодом), типов, констант, переменных. Для защиты от множественного включения заголовочного файла используется include-guard (связка макросов
#ifndef
и#define
) или макрос#pragma once
(но он в отличие от include guard может некорректно работать с символическими ссылками).
- Классы и шаблоны
- Перегрузка функций
- Операторы
new
иdelete
- Обработка исключений через
throw/catch
Перегрузка функций – множество функций с одним и тем же именем (список параметров разный)
На перегрузку функции влияет:
- Разное количество принимаемых параметров.
- Разный тип переменных.
-
const
значение функции/метода. Если объект константный, то будет вызываться const метод, иначе - неconst
.
Тип возвращаемой переменной не имеет значения.
В C++ один или несколько аргументов функции могут задаваться по умолчанию. Для каждого параметра значение по умолчанию можно указать не более одного раза, но каждое последующее объявление функции, а также определение функции может назначать параметрам значения по умолчанию. Параметры по умолчанию должны быть последними в списке параметров.
// Пример: функция сортировки по возрастанию массива вещественных чисел
void sort(double *arr, int count, int key = 0);
// key показывает направление сортировки (0 - по возрастанию, 1 - по убыванию).
// По умолчанию сортировка будет по возрастанию
// (key = 0, если в функцию передаются только два параметра - указатель на массив
// и количество элементов в массиве).