Menü Kapat

Arkadaş Fonksiyon ve Sınıf

Arkadaş Fonksiyonlar

Üyesi olmadığı bir sınıfa ait private üyelere erişimi friend fonksiyonlar sağlar. Bir friend fonksiyon,sınıfın faaliyet alanı dışında tanımlanıp sınıfın private üyelerine erişim izni olan fonksiyondur. Bir fonksiyon ya da bütün bir sınıf, başka bir sınıf ile friend olabilecek şekilde tanımlanabilir.

Aşağıdaki örnek nasıl arkadaş tipinde harici bir fonksiyon oluşturulduğunu göstermektedir. Oluşturulan hariciFonksiyon() kullanılacak nesnenin referansını parametre olarak alır:

Deneme.h

class Deneme
{
    friend void hariciFonksiyon(Deneme & hedefNesne);

    // Elemanlar ve fonksiyonlar...
    ...
};

 

Arkadaş fonksiyon prototipi yukarıdaki gibi yapılır. Aşağıda ise implementasyon sayfasındaki hali bulunmaktadır. Görüldüğü gibi implementasyon sayfasında friend ön eki tekrar koyulmaz ve Deneme ön eki de yazılmaz çünkü harici bir fonksiyondur.

Deneme.cpp

#include "Deneme.h"

void hariciFonksiyon(Deneme & hedefNesne)
    {
        // hedefNesne üzerinde private dahil olmak üzere her elemana erişilebilir
        ...
    }

 

Arkadaş Sınıflar

Bir sınıf başka bir sınıfı arkadaşı olarak tanımlayabilir. Arkadaş sınıf diğer sınıfın tüm elemanlarına erişim sağlayabilir.

sinif1.h

#pragma once

class sinif1{
    friend class arkadasSinif;
private:
    int gizliDeger = 10;
};

 

Yukarıdaki kodda sinif1 adında bir sınıf oluşturuldu, private bir eleman koyuldu ve arkadasSinif adında bir friend sınıf olacağı derleyiciye bildirildi.

arkadasSinif.h

#pragma once

#include "sinif1.h"

class arkadasSinif{
public:
    arkadasSinif();
    void gizliDegeriDegistir(sinif1 n);
};

 

arkadasSinif.cpp

#include arkadasSinif.h

arkadasSinif::arkadasSinif(){}

void arkadasSinif::gizliDegeriDegistir(sinif1 n){
    n.gizliDeger++;
}

 

Örnekte görüldüğü gibi arkadasSinif sınıfından sinif1 sınıfındaki private elemana erişildi ve üzerinde değişiklik yapıldı.

Bir yorum yazınız. Yorumlarınız bizim için değerlidir.