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]