Удобным свойством C++ является возможность указать для параметра функции значение, которое будет использовано автоматически, если при вызове функции этот параметр не указывается. Такие аргументы называются аргументами по умолчанию и задаются они аналогично инициализации переменных при объявлении.
Например, объявление функции error с двумя параметрами по умолчанию.
void error(const char* msg, int level = 0, int kill = 0);
Здесь level и kill являются аргументами по умолчанию и если при вызове функции они не указываются, то им присваиваются значения, указанные в инициализаторах, то есть нули.
Таким образом, функция error может быть вызвана с одним, двумя или тремя аргументами:
error("Ошибка!"); // Вызывается error("Ошибка!", 0, 0);
error("Ошибка!", 1); // Вызывается error("Ошибка!", 1, 0);
error("Ошибка!", 3, 1); // Вызывается error("Ошибка!", 3, 1);
Если у функции есть и объявление, и определение, то значения по умолчанию для параметров должны быть указаны ТОЛЬКО в объявлении.
Все аргументы по умолчанию должны быть последними аргументами в списке – ни один явный аргумент не может находиться правее их. Поэтому следующее объявление будет ошибочным:
void func(int p1, bool p2 = true, int p3);