Механизм аргументов по умолчанию позволяет задавать значения параметров функции, которые будут использоваться, если эти параметры не были переданы при вызове функции.
Синтаксис и правила
- Объявление аргументов по умолчанию:
- Аргументы по умолчанию указываются в объявлении функции, а не в определении (если они разделены).
- Аргументы по умолчанию должны быть указаны после всех необязательных параметров.
 
Пример
#include <iostream>
 
// Объявление функции с аргументами по умолчанию
void printMessage(const std::string &message, int times = 1) {
    for (int i = 0; i < times; ++i) {
        std::cout << message << std::endl;
    }
}
 
int main() {
    printMessage("Hello");       // Вызывается с одним аргументом
    printMessage("Hi", 3);       // Вызывается с двумя аргументами
    return 0;
}Преимущества и недостатки
Преимущества:
- Уменьшает количество перегруженных функций.
- Улучшает читаемость и удобство использования функций.
Недостатки:
- При изменении значений по умолчанию в заголовочном файле необходимо перекомпилировать все модули, которые включают этот заголовок.
(доп.) Подробности
- Значения по умолчанию задаются в объявлении функции:
- Если функция объявлена в заголовочном файле, значения по умолчанию указываются в этом объявлении.
- Если объявление и определение функции находятся в одном месте (например, в .cppфайле), значения по умолчанию указываются непосредственно перед телом функции.
 
Пример
#include <iostream>
 
// Объявление функции в заголовочном файле
void display(const std::string &text, int count = 2);
 
// Определение функции в исходном файле
void display(const std::string &text, int count) {
    for (int i = 0; i < count; ++i) {
        std::cout << text << std::endl;
    }
}
 
int main() {
    display("Welcome!");    // Использует значение по умолчанию (count = 2)
    display("Hi", 4);       // Передает два аргумента
    return 0;
}