Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Аргументы функций по умолчанию в C++: как они работают и лучшие практики

Аргументы функций по умолчанию в C++

Изучите, как назначать значения по умолчанию параметрам функций в C++, с пошаговыми примерами и практическими рекомендациями.

В C++ параметрам функций можно задавать значения по умолчанию. Когда вызов опускает аргумент, компилятор подставляет значение по умолчанию. Если аргумент передан, значение по умолчанию игнорируется.


Как работают аргументы по умолчанию

Аргументы функций по умолчанию в C++: как они работают и лучшие практики

Рассмотрим следующую иллюстрацию:

  1. temp() использует оба значения по умолчанию.
  2. temp(6) переопределяет первый параметр; второй остается по умолчанию.
  3. temp(6, -2.3) предоставляет значения для обоих, переопределяя оба значения по умолчанию.
  4. Вызов temp(3.4) ошибочно передает double в int параметр. Компилятор усекает значение до 3, демонстрируя, что типы аргументов должны соответствовать порядку объявления.

Пример: использование аргументов по умолчанию

#include <iostream>
using namespace std;
// Прототип с аргументами по умолчанию
void display(char = '*', int = 3);
int main() {
    int count = 5;
    cout << "No argument passed: ";
    display(); // использует '*', 3
    cout << "First argument passed: ";
    display('#'); // использует '#', 3
    cout << "Both arguments passed: ";
    display('$', count); // использует '$', 5
    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: $$$$$

Программа ведет себя так:

  1. display() использует значения по умолчанию c='*' и count=3.
  2. display('#') переопределяет только первый аргумент; второй остается по умолчанию.
  3. Когда оба аргумента переданы, значения по умолчанию игнорируются.

Определение значений по умолчанию непосредственно в определении функции также допустимо и часто понятнее:

#include <iostream>
using namespace std;
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: ";
    display();
    cout << "First argument passed: ";
    display('#');
    cout << "Both arguments passed: ";
    display('$', count);
    return 0;
}

Ключевые моменты для запоминания

  1. После того как параметр получает значение по умолчанию, каждый следующий параметр также должен иметь его. Например:
    // Недопустимо
    void add(int a, int b = 3, int c, int d);
    // Допустимо
    void add(int a, int c, int b = 3, int d = 4);
  2. Когда значения по умолчанию указаны в определении, а не в прототипе, определение должно предшествовать любому вызову. Иначе компилятор выдаст ошибку.

Язык C

  1. Освоение пространств имен в C#: организация, область видимости и лучшие практики
  2. Освоение операторов C++: полное руководство с практическими примерами
  3. Комментарии в C++: лучшие практики для читаемого и поддерживаемого кода
  4. Как передавать массивы в функции в C++: практическое руководство
  5. Шаблоны классов в C++: практическое руководство
  6. Операторы в C: исчерпывающее руководство
  7. Четыре проверенных паттерна пользовательских функций в C
  8. Освоение программирования на C: подробное руководство для начинающих
  9. Функции в C: объявление, определение, вызов, аргументы (по значению и по ссылке), рекурсия
  10. Функции с переменным числом аргументов в C: практическое руководство