Yapıcı ve Yıkıcı Fonksiyonlar
Ali ÇAKIR
2 yorum
C ++ Programlama Yapıcı ve Yıkıcı Fonksiyonlar, C++ Programlama Otomatik Üye Atamaları, C++ Programlama Üyelere İlk Atama, C++ Programlama Yapıcı Fonksiyon Çağırma, C++ Programlama Yapıcı Fonksiyonlar, C++ Programlama Yıkıcı Fonksiyonlar
Yapıcı Fonksiyonlar
Yapıcı Fonksiyon
- İng.constructor
- Bir nesnenin tanımında bu nesne üyelerine ilk değer ataması yapamak için kullanılan özel fonksiyondur.
- Bir nesne tanımlandığında otomatik olarak çalışır.
- Yapıcı fonksiyon yazarken dikkat edilmesi gerekenler
- Yapıcı fonksiyonun ismi sınıf ismi ile ayn olmalıdır
- Yapıcı fonksiyonların döndürme tipi yoktur.
- Nesne tanımı yapıldığında otomatik olarak çağrıldıkları için yapıcı fonksiyonları özel olarak çağırmaya gerek yoktur.
Yapıcı fonksiyon kullanılmadığı durum
#include <iostream> using namespace std; class Dikdortgen { int en, boy; public: void ata(int e,int b ) { en = e; boy = b; } int alan() { return en*boy; } }; int main() { Dikdortgen x; // x isimli bir dikdörtgen nesnesi x.ata(5, 10); // x’in enine5, boyuna 10 atanır cout << “Alan= ” << x.alan() << endl; return 0; } /*////////////////////////////////////////////////////////////////////// en 5 boy 10 ata() alan() x /////////////////////////////////////////////////////////////////////*/
Yapıcı fonksiyon kullanıldığı durum
#include <iostream> using namespace std; class Dikdortgen { int en, boy; public: Dikdortgen(int e,int b ) { en = e; boy = b; } int alan() { return en*boy; } }; int main() { Dikdortgen x(5,10); // x isimli bir dikdörtgen nesnesi cout << “Alan= ” << x.alan() << endl; return 0; } /*////////////////////////////////////////////////////////////////////// Alan=50 //////////////////////////////////////////////////////////////////////*/
- Yapıcı fonksiyon
- Dikdortgen ( int e, int b ) { en=e; boy=b; }
- Yapıcı Fonksiyon Çağırımı
- Dikdortgen x(5,10); // Yapıcı fonksiyonun ismi (Dikdortgen ) sınıf ismi ile aynı
Yapıcı fonksiyonun döndürme tipi tanımlanmamıştır.
- Dikdortgen x(5,10); // Yapıcı fonksiyonun ismi (Dikdortgen ) sınıf ismi ile aynı
!! Yapıcı fonksiyonları public olarak tanımlamayı unutmamalı aksi halde otomatik olarak çağrılmaz.
#include <iostream> using namespace std; class Nokta { int x, y; public: Nokta(int a = 0, int b = 0) //Yapıcı fonksiyon tanımı { x = a; y = b; } int xDegeri() { return x; } }; int main() { Nokta bir(12, 6); // bir nesnesi yaratılır ve çağrılır Nokta iki(25); // iki nesnesi yaratılır ve yapıcı çağrılır Nokta uc; // üc nesnesi yaratılır ve yapıcı çağrılır cout << “bir’in x kordinati: ” << bir.xDegeri() << endl; cout << “iki’nin x kordinati: ” << iki.xDegeri() << endl; cout << “uc’un x kordinati: ” << uc.xDegeri() << endl; return 0; } /*////////////////////////////////////////////////////////////////////// Çıkıtı : bir’in x kordinati: 12 iki’nin x kordinati:25 uc’un x kordinati:0 /////////////////////////////////////////////////////////////////////*/
Nokta bir(12,6);
Nokta iki(25);
Nokta uc;
“bir” nesnesi için yapıcı fonksiyona 2 parametre, “iki” nesnesi için 1 parametre yollanır,“uc” nesnesi için ise parametre gönderilmez. Bu durumda “iki” ve “uc” nesneleri için varsayılan değerler kullanılır ve bu nesneler aşağıdaki şekilde olur.
Varsayılan Yapıcı Fonksiyon
- İng.Default constructor
- Hiç parametresi olmayan yapıcı fonksiyonlarıdır.
/* Varsayılan Yapıcı Fonksiyon */ ogrenci(); /* Varsayılan Yapıcı Fonksiyon Tanımı*/ Ogrenci::Ogrenci() {……..}
Üyelere İlk Atama
- İng.Member initialization
- Yapıcı fonksiyonlarda atama operatörünü ( = ) kullanmadan nesne üyelerine ilk değerlerini atamaya üyelere ilk atama adı verililir.
#include <iostream> using namespace std; class Basit { int i; float f; public: Basit(int ,float); }; Basit::Basit(int a, float b) { i = a; f = b; } int main() { Basit nsn(1, 2.5); return 0; }
ilk atama yöntemidir
Basit::Basit(int a,float b):i(a),f(b) { }
Yapıcı Fonksiyonu Yükleme
Yapıcı fonksiyonlar, farklı parametrelerle birden fazla tanımlanabilir.
Eleman () {}; // 1. yapıcı fonksiyon Eleman ( int i, string s): n(i), isim(s){}; // 2. yapıcı fonksiyon Eleman e1; // 1. yapıcı çağrılır Eleman e2(123,”Ali”); // 2. yapıcı çağrılır
- Eğer bir sınıfa hiçbir yapıcı fonksiyon tanımlanmamışsa, derleyici otomatik olarak içi boş bir varsayılan yapıcı fonksiyon tanımlar.
- Eğer sınıfta başka bir yapıcı fonksiyon tanımı yapıldıysa, varsayılan fonksiyon otomatik olarak yaratılmaz.
class Eleman { int no; // Eleman e; Doğru string isim; } class Eleman { int no; string isim; //Eleman e; Yanlış public: Eleman (int _no, string _isim):no(_no),isim(_isim); } class Eleman { int no; stringisim; public: //Eleman e; Doğru Eleman() {} Eleman( int _no, string _isim):no(_no),isim(_isim); }
Yapıcı Fonksiyon Çağırma
- Yapıcı fonksiyonlar nesne tanımı yapıldığı sırada otomatik olarak çağrılır.
- Yapıcı fonksiyon istenildiğinde de çağrılabilir.
class Basit { int i; // Basit nsn; nsn i =>0 f=> 0 float f; public: Basit(); //nsn=Basit(7,4.3); nsn i=> 7 f=> 4.3 Basit::Basit(int a, float b):i(a),f(b) { } }; Basit::Basit( ) // nsn=Basit( ); nsn i=>0 f=> 0 { i=0; f=0.0 }
4.3
3
votes
Article Rating
ilk iki konsol aynı, ikisinde de yapıcı fonksiyon satırı yok. Ekleme unutulmuş olabilir
Teşekkürler. Düzenleme sağlanmıştır.