Serap Şen

Bilişim hakkında herşey…

C++ dersi 6-Sınıf(Class) Yapıcı ve Yıkıcılar

Merhaba Arkadaşlar,

Kaldığımız yerden devam edelim sınıf yapılarına.Bu bölümümüzde yapıcıları(constructor)ve yıkıcıları(destructor) anlatacağım.

Sınıf nesneleri yapıldıklarında üyelerine ilk değerleri sınıfın yapıcı fonksiyonları tarafından atanır.Bir yapıcı,sınıf ile aynı isme sahip üye fonksiyonudur.Programcı yapıcı fonksiyonu sağladıktan sonra,o sınıftan bir nesne yaratıldıkça yapıcı otomatik olarak çağrılır.Yapıcılar,sınıf nesnelerine çeşitli biçimde ilk değer atamak için aşırı yüklenebilir.Veri üyelerine ya yapıcı tarafından ya da nesne yaratıldıktan sonra ayarlamak suretiyle ilk değerleri atanmalıdır.

Yapıcıların özelliklerinden bahsedelim:

*Yapıcı için dönüş değeri belirlemek veya yapıcıdan bir değer döndürmeye çalışmak yazım hatasıdır.

*Varsayılan(default) olarak kullanılabilirler.

*Birden fazla yapıcı kullanılabilir.Hepsinin aynı ismi(sınıfın ismini)taşıması gerekir.

Şu örneğe bakalım:

class CClock // CClock sınıfının tanımlanması

{

public:

CClock(int =0, int =0, int =0); //constructor

private:

int hr;

int min;

int sec;

};

tanımlaması yapıldıktan sonra

CClock clock1; // initialization: hr=0, min=0, sec=0

CClock clock2(5); // initialization: hr=5, min=0, sec=0

CClock clock3(12, 30); // initialization: hr=12, min=30, sec=0

CClock clock4(7, 34, 18); // initialization: hr=7, min=34, sec=18

şeklinde çağrılabilir.Farkettiyseniz belirtilmeyen kısımlarında default constructor çalışmıştır.

Yıkıcılar;sınıfın özel bir fonksiyonudur.Yıkıcının adı,sınıf adının önüne (~) tilda konulmuş halidir.

Yıkıcıların özelliklerinden bahsedelim:

*Bir sınıf yıkıcısı nesne yok edilirken çağrılır.Yıkıcı nesneyi gerçekten yok etmez.Sistem hafızayı geri alırken sonlandırma temizliğini yapar,böylece hafıza yeni nesnelerin tutulması için tekrar kullanılabilir.

*Bir yıkıcı hiçbir parametre almaz ve hiçbir değer döndürmez.

*Bir sınıfın sadece bir yıkıcısı olabilir.

*Yıkıcıların aşırı yüklenmesine izin verilmez.

YAPICI VE YIKICILAR NE ZAMAN ÇAĞRILIR?

Yapıcı ve yıkıcılar otomatik olarak çağrılır.Bu fonksiyonların çağrılış sırası programın çalıştırılmasının,oluşturulan nesnelerin faaliyet alanına girişi ve çıkışının sırasına bağlıdır.Genel olarak,yıkıcı çağrıları yapıcı çağrılarıyla ters sırada gerçekleştirilir.Dosya çalışmaya başladığında ,global faaliyet alanında tanımlanmış nesneler için yapıcılar tüm diğer fonksiyonlardan önce çağrılır.Karşılık gelen yıkıcılar main sona erdiğinde çağrılır.

Aşağıdaki koda bir göz atalım.Daha iyi anlamaya çalışalım:

//yarat.h

//YaratVeYik sınıfının tanımlanması.

class YaratVeYik{

public:

YaratVeYik(int);//yapıcı

~YaratVeYik();//yıkıcı

private:

int veri;

};

//yarat.cpp

//YaratVeYik sınıfının üye fonksiyonları tanımlamaları

#include

using namespace std;

#include”yarat.h”

YaratVeYik::YaratVeYik(int deger)

{

veri=deger;

cout<<”Nesne”<<veri<<”yapıcısı”;

}

YaratVeYik::~YaratVeYik()

{cout<<”Nesne”<<veri<<”yıkıcı”<<endl;}

//Yapıcı ve yıkıcıların çağrılış sıralarını gösterir

#include

using namespace std;

#include “yarat.h”

void yarat(); //prototip

YaratVeYik birinci(1);//global nesne

int main()

{

cout<<”(global mainden önce yaratılmıştır)”<< endl;

YaratVeYik ikinci(2);//yerel nesne

cout<<”(mainde yerel otomatik)”<<endl;

static YaratVeYik ucuncu(3);//yerel nesne

cout<<”(mainde yerel statik)”<< endl;

yarat();//yeni nesneler yaratmak için fonksiyonu çağır.

YaratVeYik dorduncu(4);//yerel nesne

cout<<”(mainde yerel otomatik)” << endl;

return 0;

}

//nesneleri yaratan fonksiyon

void yarat()

{

YaratVeYik besinci(5);

cout<<”(yarat’ta yerel otomatik)” << endl;

static YaratVeYik altinci(6);

cout<<”(yarat’ta yerel statik)” << endl;

YaratVeYik yedinci(7);

cout<<”(yarat’ta yerel otomatik)” << endl;

}

ÇIKTISI:

Nesne 1 yapıcısı (global mainden önce yaratılmıştır)

Nesne 2 yapıcısı (mainde yerel otomatik)

Nesne 3 yapıcısı (mainde yerel statik)

Nesne 5 yapıcısı (yarat’ta yerel otomatik)

Nesne 6 yapıcısı (yarat’ta yerel statik)

Nesne 7 yapıcısı (yarat’ta yerel otomatik)

Nesne 7 yapıcısı

Nesne 5 yapıcısı

Nesne 4 yapıcısı (mainde yerel otomatik)

Nesne 4 yapıcısı

Nesne 2 yapıcısı

Nesne 6 yapıcısı

Nesne 3 yapıcısı

Nesne 1 yapıcısı

Tags: , , , , , ,


Bir Cevap Yazın

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

*

*

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Follow Me

Microsoft Imagine Cup 2012 Repharm Project

Makalelerimi takip edebilirsiniz…

Arşivlerim

Readmee E-dergimiz

Anketler

Web Sitemi Beğendin mi?

  • Kötü (24%, 35 Votes)
  • Fena değil (8%, 12 Votes)
  • İdare eder (10%, 15 Votes)
  • İyi (18%, 27 Votes)
  • Çok iyi (40%, 57 Votes)

Total Voters: 146

Loading ... Loading ...

Kaç Kişi Online?