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]