inheritance ile constructer,destructer kullanımı

23 Nisan 2010 – 22:50

inheritance(kalıtım):bir classın diğer classın özelliklerini alıp ona bişeyler daha da ekleyip kullanmasıdır.
base class(ana class):içeriğini veren temek classtır.
derived class(türetilmiş class):base classın içini kullabilen türetilmiş classtır.

bir classı inherit etmişsek(kalıtım),costructer ve destructerları çalışıken bunların bi hiyerarşik sırası vardır,şimdi  bununla ilgili  örnek kodu inceleyelim:

HEADER FİLE

#pragma once
 
class nokta//base class
{
public:
	nokta(int=0,int=0);
	~nokta(void);
protected://protected olsun ki derived classlardan da kullanılsın
	int x;
	int y;
};
 
class daire:public nokta//derived class
{
public:
	daire(double r=0.0,int x=0,int y=0);
	~daire();
private:
	double yaricp;
};

İMLEMENTATİONLAR

#include "nokta.h"
#include <iostream>
 
using namespace std;
nokta::nokta(int a,int b)
{
	x=a;
	y=b;
	cout<<"nokta constructer:"<<'['<<x<<","<<y<<']'<<endl;
 
}
 
nokta::~nokta(void)
{
cout<<"nokta destructer"<<'['<<x<<","<<y<<']'<<endl;
}
daire::daire(double r,int a,int b):nokta(a,b)
{
yaricp=r;
cout<<"daire constructer yaricap:"<<yaricp<<'['<<x<<","<<y<<']'<<endl;
}
daire::~daire(){
	cout<<"daire destructer yaricap:"<<yaricp<<'['<<x<<","<<y<<']'<<endl;
}

MAİN KODU

//inheritance ile birlikte consructer ve destructer  kullanma
//önce base claasın  constructerı çalışır
//önce derived classın destructerı çalışır
#include <iostream>
#include "nokta.h"
using namespace std;
 
int main()
{  
	{
	nokta n(11,22);//noktanın constructerı çalışır
	}//destructor çalışabilsin diye blok koyuyoruz,noktanın destructorı çalışır
cout<<endl;
daire daire1(14.5,72,29);//noktanın constructerı,dairenin constructerı
cout<<endl;
daire daire2(10,5,5);//noktanın constructerı,dairenin constructerı
cout<<endl;
 
return 0;
}//noktanın constructerı,dairenin constructerı,daire1 için
//noktanın constructerı,dairenin constructerı,daire2 için

DERYA GÜNDÜZ

ESKİŞEHİR OSMANGAZİ ÜNİV. BİLGİSAYAR MÜHENDİSLİĞİ 2. SINIF

deryagunduz.blogspot.com

mikroskosmos@hotmail.com

deryagunduz47@gmail.com

Bookmark and Share

Post a Comment

Subscribe without commenting