Рубрики

Стандартные аргументы в C ++

Аргумент по умолчанию — это значение, предоставленное в объявлении функции, которое автоматически присваивается компилятором, если вызывающая функция не предоставляет значение для аргумента со значением по умолчанию.

Ниже приведен простой пример C ++, демонстрирующий использование аргументов по умолчанию. Нам не нужно писать 3 функции суммы, только одна функция работает, используя значения по умолчанию для 3-го и 4-го аргументов.

#include<iostream>

using namespace std;

  
// Функция с аргументами по умолчанию, ее можно вызвать с
// 2 аргумента или 3 аргумента или 4 аргумента.

int sum(int x, int y, int z=0, int w=0)

{

    return (x + y + z + w);

}

  
/ * Программа драйвера для проверки вышеуказанной функции * /

int main()

{

    cout << sum(10, 15) << endl;

    cout << sum(10, 15, 25) << endl;

    cout << sum(10, 15, 25, 30) << endl;

    return 0;

}

Выход:

25
50
80

Когда перегрузка функции выполняется вместе со значениями по умолчанию. Тогда нам нужно убедиться, что это не будет двусмысленным.
Компилятор выдаст ошибку, если она неоднозначна. Ниже приведена модифицированная версия вышеуказанной программы.

#include<iostream> 

using namespace std; 

  
// Функция с аргументами по умолчанию, ее можно вызвать с
// 2 аргумента или 3 аргумента или 4 аргумента.

int sum(int x, int y, int z=0, int w=0) 

    return (x + y + z + w); 

int sum(int x, int y, float z=0, float w=0) 

    return (x + y + z + w); 


/ * Программа драйвера для проверки вышеуказанной функции * /

int main() 

    cout << sum(10, 15) << endl; 

    cout << sum(10, 15, 25) << endl; 

    cout << sum(10, 15, 25, 30) << endl; 

    return 0; 

}

Ошибка:

prog.cpp: In function 'int main()':
prog.cpp:17:20: error: call of overloaded 
'sum(int, int)' is ambiguous
  cout 

Key Points:

  • Аргументы по умолчанию отличаются от константных аргументов, так как константные аргументы не могут быть изменены, тогда как аргументы по умолчанию могут быть перезаписаны при необходимости
  • Аргументы по умолчанию перезаписываются, когда вызывающая функция предоставляет для них значения. Например, вызов функции sum (10, 15, 25, 30) заменяет значения z и w на 25 и 30 соответственно.
  • Во время вызова функции аргументы от вызывающей функции до вызываемой функции копируются слева направо. Следовательно, sum (10, 15, 25) присваивает 10, 15 и 25 x, y и z. Поэтому значение по умолчанию используется только для w.
  • Как только значение по умолчанию используется для аргумента в определении функции, все последующие аргументы к нему должны иметь значение по умолчанию. Это также может быть указано как аргументы по умолчанию, назначаемые справа налево. Например, следующее определение функции недопустимо, поскольку последующий аргумент переменной по умолчанию z не является значением по умолчанию.

// Неверно, потому что z имеет значение по умолчанию, но w после него
// не имеет значения по умолчанию

int sum(int x, int y, int z=0, int w)

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Стандартные аргументы в C ++

0.00 (0%) 0 votes