C++11. Как работает функция swap(a, b)? Я понимаю, что она меняет значение переменных, но почему в качестве аргументов принимает не адрес на переменную?

11 Окт 2019 в 23:42
153 +1
0
Ответы
1

Функция swap(a, b) в C++11 принимает параметры по значению, а не по ссылке или указателю, потому что в новых стандартах C++ была внедрена возможность автоматической передачи аргументов по ссылке или rvalue reference.

Таким образом, при использовании функции swap(a, b) передаваемые ей значения a и b будут копироваться в параметры функции. Затем функция поменяет значения своих параметров местами, что приведет к изменению значений переменных a и b в теле функции.

Пример использования функции swap(a, b):

#include <iostream>
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int x = 5, y = 10;
std::cout << "Before swap: x = " << x << ", y = " << y << std::endl;
swap(x, y);
std::cout << "After swap: x = " << x << ", y = " << y << std::endl;
return 0;
}

В этом примере функция swap работает с копиями значений переменных x и y, поэтому изменения, произведенные внутри функции, не будут отражены на оригинальных переменных. Для того, чтобы функция могла менять оригинальные значения переменных a и b, нужно передавать их по ссылке или указателю.

19 Апр в 12:01
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 017 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир