C++ Ile Nesne Yönelimli Programlama (Arkadaş Fonksiyonlar)

Aslihan Akbiyik
Oct 24, 2020

--

Bu yazılar https://www.tutorialspoint.com/cplusplus/ adresindeki yazı dizilerinin çevirileridir.

Bir sınıfın arkadaş fonksiyonu, o sınıfın kapsamının dışında tanımlanır, ancak sınıfın tüm özel(private) ve korumalı(protected) üyelerine erişme iznine sahiptir. Arkadaş fonksiyonlarının prototipleri sınıf tanımında gibi görünseler de sınıf üyesi fonksiyonlar değillerdir.

Bir arkadaş, bir fonksiyon, fonksiyon şablonu, veya üye fonksiyonu, sınıf, sınıf şablonu olabilir. Bu durumda tüm sınıf ve sınıfın tüm üyeleri arkadaştır.

Bir fonksiyonu bir sınıfın arkadaşı olarak bildirmek için, sınıf tanımında fonksiyon prototipinin önüne aşağıdaki gibi friend(arkadaş) anahtar sözcüğü eklenir -

class Kutu {

double genislik;

public:

double uzunluk;

friend void genisligiYazdir( Kutu kutu );

void genisligiAyarla( double gen );

};

SinifIki sınıfının tüm üye fonksiyonlarını SinifBir sınıfının arkadaşları olarak bildirmek için, SinifBir sınıfının tanımına aşağıdaki bildirimi yapmalısınız -

friend class SinifIki;

Programı şöyle düşünün -

#include <iostream>

using namespace std;

class Kutu {

double genislik;

public:

friend void genisligiYazdir( Kutu kutu );

void genisligiAyarla( double gen );

};

// Üye fonksiyon tanımı

void Kutu::genisligiAyarla( double gen ) {

genislik = gen;

}

// Not: genisligiYazdir()hiçbir sınıfın üye fonksiyonu değildir

void genisligiYazdir( Kutu kutu ) {

/* Çünkü genisligiYazdir() Kutu’nun arkadaşı, o sınıfın herhangi bir üyesine direkt erişebiliyor */

cout << “Kutunun genisligi : “ << kutu.genisligi <<endl;

}

// Programın ana fonksiyonu

int main() {

Kutu kutu;

// kutunun genişliğini üye fonksiyonsuz ayarla

kutu.genisligiAyarla(10.0);

// genişliği yazdırmak için arkadaş fonksiyon kullan.

genisligiYazdir( kutu );

return 0;

}

Kod derlenip çalıştırıldığında -

Kutunun genisligi : 10

https://www.tutorialspoint.com/cplusplus/cpp_friend_functions.htm

--

--

Aslihan Akbiyik

ICS Infrastructure Assistant Specialist @SOCAR | aslihana.bandcamp.com/