Kopya Yapıcı ve Yıkıcı Fonksiyonlar

Yıkıcı ve Kopya Yapıcı Fonksiyonlar

Kopya Yapıcı Fonksiyonlar

  • İng.Copy constructor
  • Aynı sınıf tipinde başka bir nesneyi parametre olarak alan yapıcı fonksiyonlarıdır.
  • Parametre olarak gelen nesneyi, içinde bulunduğu nesneye kopyalar.
class A
  {
    int no;                                     
      public:
        A( );
        A(A &par);            // kopya yapıcı prototipi
   };
A::A()
  {
    no=0;
      cout<<“Varsayılan Yapici”<<endl;  
   }
A::A(A &par)
  {
    no=par.no;
    cout<<“Kopya Yapici”<<endl;
  }
int main()
 { 
    A a1;
    A a2(A1);
    A a3=a2;
      return 0;
  }
/*////////////////////////////////////////////////////////////////////////
         Çıktı:
       Varsayilan Yapici
       Kopya Yapici
       Kopya Yapici
/////////////////////////////////////////////////////////////////////////*/  

Otomatik Üye Atamaları

  • Aynı tipte bir nesne başka bir nesneye atanırsa, bu nesnenin tüm üyeleri ikinci nesnenin üyelerine otomatik olarak atanır.
    • Tanımlama sırasında bir nesne başka bir nesneye atanırsa
    • Bir fonksiyona parametre olarak bir nesne yollanırsa
    • Bir fonksiyondan bir nesne döndürülürse

Tanımlama sırasında bir nesne başka bir nesneye atanırsa

  1. #include<iostream>
  2. using namespace std;
  3. class Bir
  4. {
  5. int x;
  6. float y;
  7. public:
  8. Bir(int _x,float _y):x(_x),y(_y) {}
  9. };
  10. int main()
  11. {
  12. Bir n1(1, 2.5);
  13. Bir n2 = n1; // n1 nesnesinin tüm üyeleri n2 nesnesine otomatik olarak kopyalanır
  14. return 0;
  15. }
  16. /*//////////////////////////////////////////////////////////////////////
  17.   x ->1 x ->1
  18.   y >2.5 y >2.5
  19.   n1 n2
  20. //////////////////////////////////////////////////////////////////////*/

Bir fonksiyona parametre olarak bir nesne yollanırsa

  1. #include <iostream>
  2. using namespace std;
  3. class Bir
  4. {
  5. int x;
  6. float y;
  7. public:
  8. Bir(int _x,float _y):x(_x),y(_y) {}
  9. };
  10. void main()
  11. {
  12. Bir nsn(1, 2.5);
  13. fon(nsn); // nsn nesnesi a nesnesine yollanır
  14. return 0;
  15. }
  16. /*//////////////////////////////////////////////////////////////////////
  17.   x ->1 x ->1
  18.   y >2.5 y >2.5
  19.   nsn a
  20. ////////////////////////////////////////////////////////////////////*/
Bir fonksiyonda bir nesne döndürülürse
  1. #include <iostream>
  2. using namespace std;
  3. class Bir
  4. {
  5. int x;
  6. float y;
  7. public:
  8. Bir(int _x,float _y):x(_x),y(_y) {}
  9. Bir() { }
  10. };
  11. Bir fon()
  12. {
  13. return Bir(1, 2.5);
  14. }
  15. int main()
  16. {
  17. Bir nsn;
  18. nsn=fon(); // fon( )’un döndüğü nesne nsn’ye atanır
  19. return 0;
  20. }
  21. /*/////////////////////////////////////////////////////////////////
  22.   x ->1 x ->1
  23.   y >2.5 y >2.5
  24.   nsn fon()
  25. /////////////////////////////////////////////////////////////////*/

Yıkıcı Fonksiyonlar

  • İng.Destructor
  • Yıkıcı fonksiyonlar ise bir nesne programda yok edilmeden hemen önce otomatik olarak çağrılan üye fonksiyonlardır.
  • Nesnenin yaratıldığı blok bittiğinde o nesne yok edilir ve yok olamadan hemen önce yıkıcı fonksiyon otomatik olarak çağrılır.
  • Yıkıcı fonksiyonu yazarken şu noktalara dikkat etmeli
    • Yıkıcı fonksiyon ismi ∼ işareti ile başlar ve sınıfla aynı ismi taşır.
    • Yıkıcı fonksiyonlara yükleme yapılmaz.
    • Parametre ve döndürme tipleri yoktur. 
    • Otomatik olarak çağrılırlar.
  1. #include <iostream>
  2. using namespace std;
  3. class Eleman
  4. {
  5. int no;
  6. public:
  7. Eleman(int=0);
  8. ~Eleman()::(int x);
  9. ~Eleman();
  10. };
  11. Eleman::~Eleman()
  12. {
  13. cout << “Yikici fonksiyon” << endl;
  14. cout << “No:<< no << endl;
  15. }
  16. Eleman::Eleman(int x)
  17. {
  18. no x;
  19. xcout << “Yapici fonksiyon” << endl;
  20. }
  21. int main()
  22. {
  23. Eleman kisi1(123), kisi2;
  24. return 0;
  25. }
  26. /*///////////////////////////////////////////////////////////////////
  27.   Çıktı:
  28.   Yapici fonksiyon
  29.   Yapici fonksiyon
  30.   Yikici Fonksiyon
  31.   No:0
  32.   Yikici fonksiyon
  33.   No:123
  34. /////////////////////////////////////////////////////////////////////*/

Kimler Neler Demiş?

  Abone ol  
Bildir