72 lines
2.4 KiB
C++
Executable File
72 lines
2.4 KiB
C++
Executable File
#include <iostream>
|
|
|
|
using namespace std;
|
|
|
|
void unchangingFunc(int passedVar) {
|
|
passedVar = 5; // Значение меняется только внутри функции
|
|
cout << "Новое значение passedVar внутри unchangingFunc: " << passedVar << endl;
|
|
}
|
|
|
|
|
|
void swap(int &num1, int &num2) {
|
|
/**
|
|
& перед именем в списке аргументов означет, что передастся ссылка на память,
|
|
с которой можно работать как со значением (обратное преобразование не нужно)
|
|
*/
|
|
int temp;
|
|
temp = num1;
|
|
num1 = num2;
|
|
num2 = temp;
|
|
}
|
|
|
|
|
|
void add_lists( int first[], int second[], int total[], int length ) {
|
|
/**
|
|
При передаче массива значения в изначальном массиве также меняются
|
|
Это поведение можно предотвратить используя const:
|
|
void add_lists( const int first[], const int second[], int total[], int length )
|
|
При таком объявлении, попытка изменить значения первых двух массивов внутри функции
|
|
вызовет ошибку
|
|
*/
|
|
for( int i = 0; i < length; i++ ) {
|
|
total[i] = first[i] + second[i];
|
|
};
|
|
}
|
|
|
|
|
|
/*
|
|
Перегрузка функций позволяет создать несколько функций с одинаковыми именами,
|
|
но разными параметрами или количеством параметров
|
|
*/
|
|
void my_func(int first_arg) {
|
|
cout << "My func called with one int argument" << endl;
|
|
}
|
|
|
|
|
|
void my_func(double first_arg) {
|
|
cout << "My func called with one double argument" << endl;
|
|
}
|
|
|
|
|
|
void my_func(int first_arg, int second_arg) {
|
|
cout << "My func called with two int arguments" << endl;
|
|
}
|
|
|
|
|
|
int main() {
|
|
int myVar = 3;
|
|
unchangingFunc(myVar); // Внутри main значение myVar остаётся таким же
|
|
cout << "Новое значение myVar после unchangingFunc: " << myVar << endl;
|
|
|
|
int myOtherVar = 9;
|
|
// При вызове функции, принимающей ссылки, дополнительные преобразования не нужны
|
|
swap(myVar, myOtherVar);
|
|
cout << "После смены мест значение myVar=" << myVar << ", myOtherVar=" << myOtherVar << endl;
|
|
|
|
// Вызов перегруженный функций
|
|
my_func(4);
|
|
my_func(double(4));
|
|
my_func(3, 5);
|
|
|
|
return 0;
|
|
} |