Механизм аргументов по умолчанию позволяет задавать значения параметров функции, которые будут использоваться, если эти параметры не были переданы при вызове функции.
Синтаксис и правила
- Объявление аргументов по умолчанию:
- Аргументы по умолчанию указываются в объявлении функции, а не в определении (если они разделены).
- Аргументы по умолчанию должны быть указаны после всех необязательных параметров.
Пример
#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;
}