مراجع در C++
آشنایی با مراجع (References) در C++ و تفاوت آن با اشارهگرها
مراجع در C++
مراجع (References) نامهای مستعار برای متغیرهای موجود هستند. برخلاف اشارهگرها، مراجع نمیتوانند null باشند و نمیتوانند تغییر کنند.
تعریف مرجع
type &referenceName = variable;
مثال پایه
int number = 42;
int &ref = number; // ref یک نام مستعار برای number است
cout << number; // 42
cout << ref; // 42
ref = 100; // number هم به 100 تغییر میکند
cout << number; // 100
تفاوت مرجع و اشارهگر
| ویژگی | مرجع | اشارهگر |
|---|---|---|
| تعریف | باید فوراً مقداردهی شود | میتواند null باشد |
| تغییر | نمیتواند تغییر کند | میتواند به متغیر دیگری اشاره کند |
| دسترسی | مثل متغیر معمولی | با * dereference میشود |
| حافظه | حافظه اضافی نمیگیرد | حافظه میگیرد |
| آدرس | &ref آدرس متغیر اصلی | &ptr آدرس خود اشارهگر |
مراجع و توابع
ارسال با مرجع
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int x = 5, y = 10;
swap(x, y);
cout << "x=" << x << ", y=" << y; // x=10, y=5
return 0;
}
بازگشت مرجع
int& getElement(int arr[], int index) {
return arr[index];
}
int main() {
int numbers[5] = {1, 2, 3, 4, 5};
getElement(numbers, 2) = 100; // میتوان مقدار را تغییر داد
cout << numbers[2]; // 100
return 0;
}
مراجع ثابت
void printValue(const int &ref) {
cout << ref << endl;
// ref = 100; // خطا! نمیتوان تغییر داد
}
int main() {
int number = 42;
printValue(number);
return 0;
}
مراجع و اشیاء
#include <string>
using namespace std;
void modifyString(string &str) {
str += " World";
}
int main() {
string text = "Hello";
modifyString(text);
cout << text; // "Hello World"
return 0;
}
مزایای مراجع
- سینتکس سادهتر از اشارهگرها
- نیازی به dereference نیست
- ایمنتر از اشارهگرها
- مناسب برای پارامترهای تابع
معایب مراجع
- نمیتوانند null باشند
- نمیتوانند تغییر کنند
- کمتر انعطافپذیر از اشارهگرها
بهترین شیوهها
- از مرجع برای پارامترهای تابع استفاده کنید
- از const & برای پارامترهای فقط خواندنی استفاده کنید
- از مرجع برای بازگشت مقادیر بزرگ استفاده کنید
- از اشارهگر وقتی null نیاز دارید استفاده کنید
نکات مهم
- مرجع باید فوراً مقداردهی شود
- مرجع نمیتواند تغییر کند
- مرجع همیشه به یک متغیر معتبر اشاره میکند
- از & برای تعریف مرجع استفاده کنید
این مبحث بخشی از دوره آموزش کامل C++ است.