مراجع در 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;
}

مزایای مراجع

معایب مراجع

بهترین شیوه‌ها

نکات مهم

این مبحث بخشی از دوره آموزش کامل C++ است.

ابزارهای مرتبط