Механизм аргументов по умолчанию позволяет задавать значения параметров функции, которые будут использоваться, если эти параметры не были переданы при вызове функции.

Синтаксис и правила

  1. Объявление аргументов по умолчанию:
    • Аргументы по умолчанию указываются в объявлении функции, а не в определении (если они разделены).
    • Аргументы по умолчанию должны быть указаны после всех необязательных параметров.

Пример

#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;
}

Преимущества и недостатки

Преимущества:

  • Уменьшает количество перегруженных функций.
  • Улучшает читаемость и удобство использования функций.

Недостатки:

  • При изменении значений по умолчанию в заголовочном файле необходимо перекомпилировать все модули, которые включают этот заголовок.

(доп.) Подробности

  1. Значения по умолчанию задаются в объявлении функции:
    • Если функция объявлена в заголовочном файле, значения по умолчанию указываются в этом объявлении.
    • Если объявление и определение функции находятся в одном месте (например, в .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;
}