C++ Dersleri 27 – C++ Arkadaş ( Friend ) Fonksiyonlar

Merhabalar arkadaşlar.
Bu dersimizde C++’ta private değişkenlere erişmemizi sağlayan friend yani arkadaş fonksiyonları göreceğiz.Konu anlatımından sonra 3 tane örnek çözdüm.Her ne kadar video içerisinde söylemiş olsam da tekrar söyleyeyim.

– > Üyesi olmadığı bir sınıfa ait private üyelere erişimi friend fonksiyonlar sağlar.
– > Private veya public kısmında herhangi bir yere koyulabilir.
– > A sınıfımız olsun.
A,B’yi arkadaşı seçiyor.
A sınıfı içine friend class B; ‘yi eklemeliyiz.
– > Arkadaşlık verilir ama alınmaz.
– > A ve B arkadaş. B ve C arkadaş. Bu durum A ve C ‘ nin arkadaş olduğunu göstermez.
Şimdi sırada videolar,iyi seyirler..

C++ Friend ( Arkadaş ) Fonksiyonlar 1.Kısım

C++ Friend ( Arkadaş ) Fonksiyonlar 2.Kısım

 

One thought on “C++ Dersleri 27 – C++ Arkadaş ( Friend ) Fonksiyonlar

  1. hocam ikinci videodaki örnek çok iyi olmus konuyu daha iyi anlamamı sagladı,ellerinize saglık..

  2. baba helal olsun ellerine saglik arkadas araciligiyla gordum siteyi,emegine saglik mukemmel bi site tek kelimeyle ,tesekkurler ..

  3. biraz gec oldu yarin sabah sinavim var ama sayende iyi bi not alacagim insallah 😉

  4. hocam hiç private kullanılmasa arkaşlara işlevlere gerek de kalmaz..
    bunun gerekliliğini nasıl açıklarız acaba??

  5. ödev bu C++ DA KARMAŞIK SAYILAR ÜZERİNDE TOPLAMA VE ÇIKARMA İŞLEMİNİ YAPAN BİR PROGRAM YAZINIZ
    ( NOT ) OVERLİNGİ KULLANMANIZ FAYDANIZADI
    UMARIM YARDIMCI OLURSUNUZ HOCAM VE ARKADAŞLAR

  6. merhaba hocam. şu programda hata alıyorum ve hatayı bulamadım yardımcı olabilirseniz çok sevineceğim.

    #include
    using namespace std;

    class sinif {
    int notbir,notiki,notuc;
    public:
    sinif(int n) {
    notbir=n;
    notiki=notbir;
    notuc=notiki;
    }

    friend void al(sinif deneme);
    friend void goster(sinif deneme);
    }x;

    void al(sinif deneme) {
    cout <> x.notbir;
    cout <> x.notiki;
    cout <> x.notuc;
    }

    void goster(sinif deneme) {
    cout << "Birinci ogrencinin notu: " << x.notbir << endl;
    cout << "Ikinci ogrencinin notu: " << x.notiki << endl;
    cout << "Ucuncu ogrencinin notu: " << x.notuc << endl;
    }
    int main() {

    x.al();
    x.goster();

    system ("pause");
    return 0;
    }

  7. Hocam öncelikle teşekkür ederim her konu örneklerle çok güzel anlatılmış. Ama videoların çoğunda ses ve görüntü senkronize değil ses biraz geriden geliyor bunu belirtmek istedim. Yinede çok teşekkürler iyi çalışmalar

  8. Merhaba Busra,

    Kodunla biraz oynadim ve ise yarar hale getirmeye calistim.. Acik konusmak gerekirse tam bir pain di bu is hehe x))

    eger friend fonksiyon cagirirsan bir classin icine, o zmn o fonksiyonlar o classin elemani olarak gorunmuyorlar sadece friend atamasi olarak gorunuyorlar. bu yuzden classtan degilde normal bir fonksiyon olarak cagirman gerek.

    Baska bir hata ise “cout” la ilgili. cout “<<" ile kullanilir "” ile degil hehe x)))

    Bir baska eksiklik de ugrastigin fonksiyonlara mainde deger atamamissin. Degersiz fonksiyonlar pek ise yaramazlar eger deger belirtilmisse iclerinde x) Ya o degerleri silicektin, ya da mainde de deger gostericektin.

    Bir baska hata da private icindeki degerleri yine private icinden degerlerle almaya kalkmissin. Oda oyle ise yaramaz maalesef =)

    Ve yine baska bir hata, 3 tane farkli deger atanilmasi istenmis lakin sen tek deger uzerinden halletmeye calismissin. 3 not icin 3 tane farkli deger gerek ve bunu classin icinde de belirtmelisin en azindan bir kere ki friend fonksiyonlar buna gerek duymasin. Lakin onlarda classin icinden okuyabiliyorlar. =)

    Code’un temize cekebildigim hali bu;
    —————————————————————————-
    class sinif {
    int notbir,notiki,notuc;
    public:
    sinif(int n1,int n2,int n3) {
    notbir=n1;
    notiki=n2;
    notuc=n3;
    }
    friend int al(sinif deneme);
    friend int goster(sinif deneme);
    };
    int al(sinif x){
    cout << x.notbir << endl;
    cout << x.notiki << endl;
    cout << x.notuc << endl;
    }
    int goster(sinif x){
    cout << "Birinci ogrencinin notu: " << x.notbir << endl;
    cout << "Ikinci ogrencinin notu: " << x.notiki << endl;
    cout << "Ucuncu ogrencinin notu: " << x.notuc << endl;
    }
    int main(){
    int not1,not2,not3;
    cout <> not1 >> not2 >> not3;
    sinif x(not1,not2,not3);
    al(x);
    goster(x);

    system (“pause”);
    return 0;
    }
    —————————————————————————-

    Umarim faydali olabilmisimdir =)

    Thankies
    Best Regards

  9. int fonk(deneme a){
    if(!(a.n%a.d))
    return 1;
    else
    return 0;

    buradaki !(a.n%a.d) ifadesini anlayamadım, a.n nin a.d ye bölümünün tam sayı olduğunu nasıl anladık burda ve ünlem işaretinin ve yüzde işaretinin amacı nedir. yardımcı olursanız sevinirim iyi günler.. 🙂

  10. ben de okulda türkçe alıyorum bu dersi ancak biz constructer a hep kurucu diyoruz ama yapıcı bana biraz garip geldi ama genel olarak çok yararlı bir ders olmuş, teşekkürler..

  11. Merhaba Uğur;
    Orada if(!a.n%a.d) ünlemin anlamı “eğer sonuç doğru çıkmaz iae true döndür” demektie.
    İf in içindeki koşul iae a.n a.d ye bölününce kalanı göster. Birbirinin tam katı iseler sonuç sıfır çıkacaktır.
    Biz başına ünlem koyduğumuz için sıfır çıkması bizim için normal şartın tersi yani true olacak.
    Tam katı deilse true çıkacak ve biz ünlem koydoğumuz için sonuç false olarak döndürülecektir.
    Umarım faydalı olmuştur.

uğur için bir cevap yazın Cevabı iptal et

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