Referanslar
[vc_row][vc_column][vc_column_text]
Referanslar bir değişkenin takma adı gibi davranan değişkenlerdir.
Referanslar & işareti ile kullanılır.
int a = 5; //normal int int &b = a; //int degiskene referans eden referans
Referanslar, referans ettikleri değişkenler gibi davranırlar. Bir tür takma ad gibi. Referansla yapılan her değişiklik normal değişkeni de etkiler.
#include <iostream>
int main()
{
int value = 5; // normal integer
int &ref = value; // degiskene referanss
value = 6; // value simdi 6 oldu
ref = 7; // vaue simdi 7 oldu
std::cout << value; // prints 7
++ref;
6std::cout << value; // prints 8
return 0;
}
- Referanslar başlangıçta bir değer ile tanımlanmalı
int value = 5; int &ref = value; // uygun referans int &invalidRef; // bir seyleri referans etmesi gerekiyor. int &ref2 = 19; //Yanlis bir referans tanimlamasi
- Referanslar başka değişkene atanamaz
Tanımlandıktan sonra referansın referans ettiği değişken değiştirilemez.
- Fonksiyon parametresi olarak referans
Referanslar en çok fonksiyonlarda kullanılır. Referans takma isim olarak davrandığı ve değişkenin içeriğini kopyalamadığı için daha performanslıdır.
- Fonksiyona referans olarak gönderilmiş değişkenler fonksiyon içerisinde değiştirilebilir.
#include <iostream>
//ref degiskene referans edecektir. Kopyalama olmaz
void Degistir(int &ref)
{
ref = 6;
}
int main()
{
int n = 5;
std::cout << n << '\n';
Degistir(n); // Arguman referans olmak zorunda degildir.
std::cout << n << '\n';
return 0;
}
Programın çıktısı:
5 6
Kısaltma olarak referanslar
İkinci bir kullanım da verilerin adlarını kısaltmaktır. Örneğin iç içe bir veri türünün en içindeki veriye erişmek biraz uzundur.
struct Something
{
int value1;
float value2;
};
struct Other
{
Something something;
int otherValue;
};
Other other;
Eğer other.something.value1’e erişmek istenseydi, her seferinde bunun yazılması gerekirdi. Bunun yerine
auto &ref = other.something.value1;
kullanılırsa artık other.something.value2 yerine ref denmesi yeterli olacaktır.
[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column width=”1/2″][vc_btn title=”Önceki Ders” color=”green” align=”left” i_icon_fontawesome=”fa fa-chevron-left” add_icon=”true” link=”url:https%3A%2F%2Fyapbenzet.org.tr%2Fcpp-gostericiler-pointerlar%2F|||”][/vc_column][vc_column width=”1/2″][vc_btn title=”Sonraki Ders” color=”green” align=”right” i_align=”right” i_icon_fontawesome=”fa fa-chevron-right” add_icon=”true” link=”url:https%3A%2F%2Fyapbenzet.org.tr%2Fcpp-bellek-yonetimi%2F|||”][/vc_column][/vc_row]