Значения параметров по умолчанию в C++
Параметры функции можно сделать необязательными. Для этого параметру задают значение по умолчанию. Если аргумент при вызове не передали, подставится заготовленное число.
Пусть для примера есть функция show, которая
выводит в консоль квадрат числа из параметра num1:
#include <iostream>
void show(int num) {
std::cout << num * num << "\n";
}
int main() {
return 0;
}
Сделаем так, чтобы параметр num по умолчанию имел
числовое значение 0 прямо в объявлении функции:
#include <iostream>
void show(int num = 0) {
std::cout << num * num << "\n";
}
int main() {
return 0;
}
Значение по умолчанию пишут только у последних параметров. Если значение задано не всем, его ставят в конце списка, а параметры без значения оставляют в начале. Когда таких значений несколько, их пишут подряд у последних параметров.
Проверим вызов, в котором аргумент передан. Квадрат числа
2 равен 4, и эта строка появится в консоли:
#include <iostream>
void show(int num = 0) {
std::cout << num * num << "\n";
}
int main() {
show(2); // выведет 4
return 0;
}
Проверим отдельный вызов этой функции совсем без аргумента.
Подставится число 0, а квадрат нуля равен 0:
#include <iostream>
void show(int num = 0) {
std::cout << num * num << "\n";
}
int main() {
show(); // выведет 0
return 0;
}
У функции show значение по умолчанию задано только
второму параметру num2. Параметр num1 указывают
при каждом вызове, и значение по умолчанию ему не задают:
#include <iostream>
void show(int num1, int num2 = 0) {
std::cout << num1 + num2 << "\n";
}
int main() {
show(4, 1); // выведет 5
show(4); // выведет 4
return 0;
}
Дана функция:
#include <iostream>
void show(int num = 5) {
std::cout << num * num << "\n";
}
int main() {
return 0;
}
Функция вызывается так:
show(2);
show(3);
show();
Расскажите, каким будет результат каждого из вызовов функции.
Дана функция:
#include <iostream>
void show(int num1 = 0, int num2 = 0) {
std::cout << num1 + num2 << "\n";
}
int main() {
return 0;
}
Функция вызывается так:
show(2, 3);
show(3);
show();
Расскажите, каким будет результат каждого из вызовов функции.