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

11 Окт 2019 в 23:42
177 +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 Апр 2024 в 12:01
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир