Serap Şen

Bilişim hakkında herşey…

C++ dersi 8-Friend(Arkadaş) Fonksiyonlar

Merhaba Arkadaşlar,
Bu yazımda sizlere friend fonksiyonları kullanma amacından ve friend sınıflarından bahsedeceğim.
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 fonsiyon ya da bütün bir sınıf,başka bir sınıf ile friend olabilecek şekilde tanımlanabilir.
Bir fonksiyonu friend olarak bildirmek için sınıf tanımlamasındaki fonksiyon prototipinin önüne friend anahtar kelimesini koyun.
Arkadaşlık verilir alınmaz.Yani B sınıfının A sınıfının bir arkadaşı olabilmesi için A sınıfının B sınıfını açık olarak friend bildirmesi gerekir.
Örnekle açıklamaya çalışayım:
//Arkadaşlar bir sınıfın özel üyelerine erişebilirler.
#include
using namespace std;
//değiştirilmiş sayı sınıfı
class sayi{
friend void xAyarla(sayi &,int);//friend bildirimi
public:
Sayi(){x=0;} //yapıcı
void yaz()const{cout<<x<<endl;} //yazdır
private:
int x; //veri üyesi
};
//Sayının veri üyesini değiştirebilir çünkü xAyarla sayısının friend
//fonksiyonu olarak bildirilmiştir
void xAyarla(Sayi &c,int val)
{
c.x=val; //yasal:xAyarla Sayının arkadasıdır
}
int main()
{
Sayi sayac;
cout <<”olusturulduktan sonra sayac.x:”;
sayac.yaz();
cout <<”xAyarla friend fonksiyonu cagrildiktan sonra sayac.x:”;
xAyarla(sayac,8); //xi bir arkadas ile ayarla
sayac.yaz();
return 0;
}
Çıktısı:
olusturulduktan sonra sayac.x:0

xAyarla friend fonksiyonu cagrildiktan sonra sayac.x:8

NOTLAR:
*friend fonksiyon kullanımı performansı artırabilir.
*Tüm arakdaşlık bildirimlerini sınıf başlığından hemen sonra yerleştirin ve önlerine herhangi bir üye erişim belirteci koymayın.

Tags: , ,


Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

*

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Follow Me

Microsoft Imagine Cup 2012 Repharm Project

Makalelerimi takip edebilirsiniz…

Arşivlerim

Readmee E-dergimiz

Anketler

Web Sitemi Beğendin mi?

  • Kötü (24%, 35 Votes)
  • Fena değil (8%, 12 Votes)
  • İdare eder (10%, 15 Votes)
  • İyi (18%, 27 Votes)
  • Çok iyi (40%, 57 Votes)

Total Voters: 146

Loading ... Loading ...

Kaç Kişi Online?