Kopya Yapıcı ve Yıkıcı Fonksiyonlar
Ali ÇAKIR
2 yorum
C ++ Programlama Yapıcı ve Yıkıcı Fonksiyonlar, C Programlama, C Programlama Dersleri, C++ Nesne Tabanlı Programlama, C++ Programlama Yapıcı Fonksiyonlar, C++ Programlama Yıkıcı Fonksiyonlar, Yıkıcı ve Kopya Yapı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
#include<iostream> using namespace std; class Bir { int x; float y; public: Bir(int _x,float _y):x(_x),y(_y) {} }; int main() { Bir n1(1, 2.5); Bir n2 = n1; // n1 nesnesinin tüm üyeleri n2 nesnesine otomatik olarak kopyalanır return 0; } /*////////////////////////////////////////////////////////////////////// x ->1 x ->1 y >2.5 y >2.5 n1 n2 //////////////////////////////////////////////////////////////////////*/
Bir fonksiyona parametre olarak bir nesne yollanırsa
#include <iostream> using namespace std; class Bir { int x; float y; public: Bir(int _x,float _y):x(_x),y(_y) {} }; void main() { Bir nsn(1, 2.5); fon(nsn); // nsn nesnesi a nesnesine yollanır return 0; } /*////////////////////////////////////////////////////////////////////// x ->1 x ->1 y >2.5 y >2.5 nsn a ////////////////////////////////////////////////////////////////////*/
Bir fonksiyonda bir nesne döndürülürse
#include <iostream> using namespace std; class Bir { int x; float y; public: Bir(int _x,float _y):x(_x),y(_y) {} Bir() { } }; Bir fon() { return Bir(1, 2.5); } int main() { Bir nsn; nsn=fon(); // fon( )’un döndüğü nesne nsn’ye atanır return 0; } /*///////////////////////////////////////////////////////////////// x ->1 x ->1 y >2.5 y >2.5 nsn fon() /////////////////////////////////////////////////////////////////*/
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.
#include <iostream> using namespace std; class Eleman { int no; public: Eleman(int=0); ~Eleman()::(int x); ~Eleman(); }; Eleman::~Eleman() { cout << “Yikici fonksiyon” << endl; cout << “No: ” << no << endl; } Eleman::Eleman(int x) { no=x; xcout << “Yapici fonksiyon” << endl; } int main() { Eleman kisi1(123), kisi2; return 0; } /*/////////////////////////////////////////////////////////////////// Çıktı: Yapici fonksiyon Yapici fonksiyon Yikici Fonksiyon No:0 Yikici fonksiyon No:123 /////////////////////////////////////////////////////////////////////*/
3
2
votes
Article Rating
krall yıkıcı fonksıyonda 18 satırda bir hata yok mu ? orası no =x ; olmiyacakmı
Teşekkürler.
Yazım hatası düzeltildi.