72 lines
2.4 KiB
C++
72 lines
2.4 KiB
C++
#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;
|
||
} |