Аргументы по умолчанию для программирования на C++ (параметры)
Аргументы по умолчанию для программирования на C++ (параметры)
В этом руководстве мы изучим аргументы C++ по умолчанию и их работу с помощью примеров.
В программировании на C++ мы можем указывать значения по умолчанию для параметров функций.
Если функция с аргументами по умолчанию вызывается без передачи аргументов, то используются параметры по умолчанию.
Однако, если аргументы передаются при вызове функции, аргументы по умолчанию игнорируются.
<час>Работа аргументов по умолчанию
<рисунок>
Мы можем понять работу аргументов по умолчанию из изображения выше:
- Когда
temp()
вызывается, функция использует оба параметра по умолчанию. - Когда
temp(6)
вызывается, первый аргумент становится6
а для второго параметра используется значение по умолчанию. - Когда
temp(6, -2.3)
вызывается, оба параметра по умолчанию переопределяются, что приводит кi = 6
иf = -2.3
. - Когда
temp(3.4)
передается, функция ведет себя нежелательным образом, поскольку второй аргумент не может быть передан без передачи первого аргумента.
Следовательно,3.4
передается в качестве первого аргумента. Поскольку первый аргумент был определен какint
, фактически передается значение3
.
Пример:Аргумент по умолчанию
#include <iostream>
using namespace std;
// defining the default arguments
void display(char = '*', int = 3);
int main() {
int count = 5;
cout << "No argument passed: ";
// *, 3 will be parameters
display();
cout << "First argument passed: ";
// #, 3 will be parameters
display('#');
cout << "Both arguments passed: ";
// $, 5 will be parameters
display('$', count);
return 0;
}
void display(char c, int count) {
for(int i = 1; i <= count; ++i)
{
cout << c;
}
cout << endl;
}
Вывод
No argument passed: *** First argument passed: ### Both arguments passed: $$$$$
Вот как работает эта программа:
display()
вызывается без передачи аргументов. В этом случаеdisplay()
использует оба параметра по умолчаниюc = '*'
иn = 1
.display('#')
вызывается только с одним аргументом. В этом случае первым становится'#'
. Второй параметр по умолчаниюn = 1
сохраняется.display('#', count)
вызывается с обоими аргументами. В этом случае аргументы по умолчанию не используются.
Мы также можем определить параметры по умолчанию в самом определении функции. Приведенная ниже программа эквивалентна приведенной выше.
#include <iostream>
using namespace std;
// defining the default arguments
void display(char c = '*', int count = 3) {
for(int i = 1; i <= count; ++i) {
cout << c;
}
cout << endl;
}
int main() {
int count = 5;
cout << "No argument passed: ";
// *, 3 will be parameters
display();
cout << "First argument passed: ";
// #, 3 will be parameters
display('#');
cout << "Both argument passed: ";
// $, 5 will be parameters
display('$', count);
return 0;
}
<час> Что нужно помнить
- После того как мы указываем значение по умолчанию для параметра, все последующие параметры также должны иметь значения по умолчанию. Например,
// Invalid void add(int a, int b = 3, int c, int d); // Invalid void add(int a, int b = 3, int c, int d = 4); // Valid void add(int a, int c, int b = 3, int d = 4);
- Если мы определяем аргументы по умолчанию в определении функции, а не в прототипе функции, то функция должна быть определена до вызова функции.
// Invalid code int main() { // function call display(); } void display(char c = '*', int count = 5) { // code }
Язык C