Tuesday

13

December

2016


0

YORUM


Compe 225 | C++ Ders 11 Friend Functions Nedir ?

7 ay önce yazıldı

c++,compe225,ders notu,friend function,nasıl kullanılır,nedir,davutkara

(Beni tanırsan beni kullanabilirsin de..)

Bir class ın içinde bir function a erişebilir miyiz ? Erişiriz.

Peki bir function’ın içinde bir class a erişebilir miyiz ? N’ayır.

Çünkü class içindeki özel şeyler yani private olanlar sadece class içinde kullanılabilir. Ancak biz bir function a class içinde bir kapı açabiliriz, işte bu olaya friend function deniyor. Yani class içine friend diyip function prototype ını yazıyoruz artık o function dışarda olmasına rağmen bizim classımızın içindeki private dataya erişebiliyor.

#include <iostream>
class myN{
private:
int N;
public:
myN(int x=0){N=x;};
int getN()const{return N;}
friend void print(myN a); // satır 8
};
void print (myN a){
std::cout << "Friend Sample";
std::cout << a.getN();
std::cout << a.N; // satır 13
}
int main(){
myN t(5);	
print(t);
// myN.print(t); Kullanımı yanlış
return 0;	
}

Yukardaki kodda satır 8 ve satır 13 ü kaldırdığınızda programınız çalışacaktır,  çünkü print normal bir fonksiyondur ve myN içindeki herhangi bir private kısma erişmiyor, public kısma erişiyor ve çalışır.

Ancak satır 8 i kaldırıp satır 13 ü kaldırmazsanız function class ın friend i değilken private kısma erişmeye çalışacak ve compiler hatası alacaksınız.

Herhangi bir kaldırma işlemi yapmadığımızda soldaki örnek çalışacak ve function kendisine gönderilen objenin içindeki private dataya erişebilecektir.

Fonksiyonu burda normal bir function olarak düşüneceğiz. Biz sadece private dataya erişebilsin diye class içine function prototype ını yazdık ve başına friend dedik bu kadar. Dolayısıyla kullanımıda normal function gibi olacaktır. Bu friend function class ın bir member-function ı olmadığı için, nokta bağlaç operatörünü kullanarak normal class methodu(function ı) gibi kullanamıyoruz.  Return 0 üzerinde bunu gösterip yanlışolduğunu vurguladım.