Skip to content

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, если в функцию передаются только два параметра - указатель на массив
// и количество элементов в массиве).
Clone this wiki locally