در این جلسه به بررسی رفرنسها در ++C می پردازیم. یک متغیر رفرنس (Reference Variable) همانند یک نام مستعار، در واقع نامی دیگر برای متغیر از پیش تعریف شده است. از زمانی که یک رفرنس به یک متغیر آغاز میشود، میتوان از نام آن متغیر یا نام رفرنس برای ارجاع به آن متغیر استفاده کرد.
رفرنسها در برابر اشارهگرها
بیشتر وقتها رفرنسها با اشارهگرها اشتباه گرفته میشوند اما سه تفاوت اساسی بین رفرنسها و اشارهگرها وجود دارد:
- رفرنسهای NULL نباید وجود داشته باشد. باید همیشه این فرض را داشته باشید که یک رفرنس به بخشی از حافظه متصل است.
- زمانیکه یک رفرنس به یک شی آغاز میشود، نمیتوان آن را به شی دیگری تغییر داد. اشارهگرها را میتوان در هر زمان به شی دیگر تغییر داد.
- یک رفرنس را باید هنگام ساختن مقداردهی اولیه کرد. اشارهگرها را در هر زمانی میتوان مقداردهی اولیه کرد.
ایجاد رفرنس در ++C
نام یک متغیر را به عنوان برچسبی متصل به مکانی از حافظه درنظر بیاورید. حال میتوان رفرنس را به عنوان نام دومی متصل به همان مکان از حافظه درنظر گرفت. بنابراین، میتوان با استفاده از نام اولیه متغیر یا رفرنس، به محتویات آن دسترسی یافت. برای مثال، متغیر زیر را درنظر بگیرید.
int i = 17;
میتوان متغیر رفرنس برای i را به صورت زیر تعریف کنید.
int& r = i;
& در این اعلان را رفرنس بخوانید. بنابراین، اعلان اول را باید به این صورت خواند:
«r یک رفرنس Integer است که به i مقداردهی شده است».
اعلان دوم را باید به این صورت خواند:
«s یک رفرنس double است که به d مقداردهی اولیه شده است».
مثال زیر رفرنسهایی به int و double را نشان میدهد.
#include <iostream> using namespace std; int main () { // declare simple variables int i; double d; // declare reference variables int& r = i; double& s = d; i = 5; cout << "Value of i : " << i << endl; cout << "Value of i reference : " << r << endl; d = 11.7; cout << "Value of d : " << d << endl; cout << "Value of d reference : " << s << endl; return 0; }
با اجرای کد فوق، خروجی زیر حاصل میشود.
Value of i : 5 Value of i reference : 5 Value of d : 11.7 Value of d reference : 11.7
رفرنسها معمولاً برای لیست آرگومانها و مقادیر بازگشتی از تابع به کار میروند. این دو محبث دو موضوع مهم راجع به رفرنسها در ++C هستند که هر برنامهنویس ++C باید بر آنها اشراف داشته باشد.
ردیف |
مفهوم و توصیف آن |
1 |
رفرنسها به عنوان پارامتر ++C ارسال رفرنسها به عنوان پارامتر تابع را با امنیت بیشتری نسبت به خود پارامترها پشتیبانی میکند. |
2 |
رفرنسها به عنوان مقدار بازگشتی از تابع میتوان یک رفرنس را مانند هر نوع داده دیگری از یک تابع بازگرداند. |
منبع: ترجمه از سایت tutorialspoint.com
خیلی ممنون از اینکه آموزش رفرنسها در ++C را مطالعه کردین. در جلسه بعدی آموزش ++C با ما همراه باشید.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.