Параметры C++ по умолчанию и передача по ссылке: синтаксис, использование и примеры
Параметры C++ по умолчанию и передача по ссылке: синтаксис, использование и примеры

Параметры С++ по умолчанию

Обзор параметров по умолчанию

В C++ параметры функции могут иметь значения по умолчанию. Это означает, что при вызове функции, если параметр опущен, будет использоваться значение по умолчанию, указанное для этого параметра.

Установить параметры по умолчанию

Значения параметров по умолчанию используют знак равенства = Символ устанавливается после объявленного типа параметра. Например:

Язык кода:c++
копировать
void myFunction(string country = "Norway");

существуют В этом примере,country параметр, значение которого по умолчанию равно "Norway"。это означает,еслисуществоватьвызов myFunction явно не указано, когда country параметры, то функция будет использовать "Norway" как его ценность.

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

В следующем примере показано, как использовать параметры по умолчанию:

Язык кода:c++
копировать
void myFunction(string country = "Norway") {
  cout << country << "\n";
}

int main() {
  myFunction("Sweden");  // Выход: Швеция
  myFunction("India");   // Выход: Индия
  myFunction();        // Выход: Норвегия
  myFunction("USA");    // Выход: США
  return 0;
}

существовать В этом примере,myFunction Функция имеет два вызова:

  • Первый вызов явно указывает параметры country для "Sweden",Итак, вывод "Sweden"
  • Второй вызов явно указывает параметры country для "India",Итак, вывод "India"
  • Третий вызов не указывает параметры country,Поэтому используйте значение по умолчанию "Norway",выход "Norway"
  • Четвертый вызов явно указывает параметры country для "USA",Итак, вывод "USA"

Несколько параметров и параметры по умолчанию

Функция может иметь несколько параметров, некоторые или все из которых могут иметь значения по умолчанию. Например:

Язык кода:c++
копировать
void myFunction(string fname, int age = 18) {
  cout << fname << " Refsnes is " << age << " years old.\n";
}

int main() {
  myFunction("Liam");       // Результат: Лиам Refsnes is 18 years old.
  myFunction("Jenny", 25);  // Результат: Дженни Refsnes is 25 years old.
  return 0;
}

существуют В этом примере,myFunction функция Есть два параметра:fname и ageage Параметры имеют значения по умолчанию 18,это означаетеслисуществоватьвызовфункцияявно не указано, когда age параметры, то 18 как его ценность.

Возвращаемые значения функции и параметры по умолчанию

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

Подвести итог

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

Функция C++ – передача по ссылке

Обзор передачи по ссылке

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

Передача по ссылке обычно используется в следующих двух ситуациях:

  • Необходимо изменить значение вызывающей переменной в функции.
  • Необходимость передачи больших структур данных в существующую функцию.,Например массив или объект,Чтобы избежать накладных расходов на копирование данных

синтаксис передачи по ссылке

Объявления параметров, передаваемые по ссылке, аналогичны объявлениям обычных параметров, но необходимо добавить & символ. Например:

Язык кода:c++
копировать
void swapNums(int &x, int &y);

существуют В этом примере,x и y является эталонным параметром. Это означает, что функция swapNums Доступ к адресу памяти переменной, предоставленной вызывающей стороной, будет осуществляться напрямую.

Передача по ссылочному примеру

В следующем примере показано, как использовать передачу по ссылке для обмена значениями двух переменных:

Язык кода:c++
копировать
void swapNums(int &x, int &y) {
  int temp = x;
  x = y;
  y = temp;
}

int main() {
  int firstNum = 10;
  int secondNum = 20;

  cout << "Before swap: " << firstNum << " " << secondNum << endl;

  swapNums(firstNum, secondNum);

  cout << "After swap: " << firstNum << " " << secondNum << endl;

  return 0;
}

существовать В этом примере,swapNums Функция получает два ссылочных параметра x и y。когдавызов swapNums функция, она будет иметь прямой доступ firstNum и secondNum Адреса памяти переменных и обмен их значениями.

Разница между передачей по ссылке и передачей по значению

характеристика

передать по ссылке

Передавать по значению

Тип параметра

ссылочный тип (int&、string& ждать)

Общий тип (int、string ждать)

Передача параметров

Непосредственно передайте адрес памяти переменной

Скопируйте значение переменной

Изменить значение параметра

Значение вызывающей переменной может быть изменено

Значение вызывающей переменной не может быть изменено

эффективность

обычно чем Передавать по значениюболее эффективный

обычно чемпередать по ссылкеэффективность Низкий

Примечания по передаче по ссылке

  • Параметры передачи по ссылке должны быть инициализированы перед вызовом существующей функции.
  • Вы не можете использовать нулевой указатель или дикий указатель в качестве параметра для передачи по ссылке.
  • передать по Параметры ссылки нельзя перепривязать к другим переменным.

Подвести итог

C++ впередать по Ссылка — это мощная функция, которая может повысить эффективность и читаемость вашего кода. Понимая передать по Грамматика, использование и меры предосторожности по ссылке: вы можете написать более кратко и эффективно. C++ программа.

наконец

для облегчает просмотр предыдущих статей друзьям на других устройствах и платформах:

Поиск общедоступной учетной записи WeChat:Let us Coding,сосредоточиться Вы можете получить последнюю статью после

Если вы нашли это полезным после прочтения, пожалуйста, поставьте лайк, соберите и подпишитесь

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода