Skip to content

Instantly share code, notes, and snippets.

@sunmeat
Last active May 1, 2025 17:46
Show Gist options
  • Save sunmeat/d10529fb45f40fd43e30749998a6411f to your computer and use it in GitHub Desktop.
Save sunmeat/d10529fb45f40fd43e30749998a6411f to your computer and use it in GitHub Desktop.
reference example C++
#include <iostream>
using namespace std;
void vegas(int& a, int& b)
{
// обмін значеннями двох змінних
int temp = a;
a = b;
b = temp;
}
int& get_max(int& a, int& b)
{
// повернення максимальної змінної за допомогою посилання
return a >= b ? a : b;
}
void rectangle(double width, double height, double& square, double& perimeter)
{
// обчислення площі та периметра прямокутника
square = width * height;
perimeter = (width + height) * 2;
}
int main()
{
system("title C++ References example");
int x = 10;
// створення посилань на змінну x
int& rx = x;
int& ry = x, &rz = rx; // два посилання в одному виразі
// int &ra; // оops! помилка! посилання потребує ініціалізації!
cout << rx << "\n"; // 10
rx = 15;
cout << x << "\n\n"; // 15
cout << &x << "\n";
cout << &rx << "\n\n"; // та сама адреса!!
int y = 25;
// виклик функції для обміну значеннями змінних
vegas(x, y);
cout << x << " " << y << "\n"; // 25 15
// зміна значення максимальної змінної через посилання
get_max(x, y) = 50; // O_O
cout << x << " " << y << "\n"; // 50 15
// посилання не можна перенаправити!
ry = y;
cout << x << " " << y << "\n"; // 15 15
// int &rb = 10; // оops! посилання зазвичай ініціалізуються l-value
const int& rc = 10; // константне посилання
// double &rd = x; // несумісність типів!
const double& re = x; // ок, оскільки типи автоматично перетворюються
double s, p;
// виклик функції для обчислення площі та периметра прямокутника
rectangle(10.1, 20.5, s, p);
cout << "\n" << s << " " << p << "\n\n";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment