C++ ile +(artı) Operatörünü Pointer İle Aşırı Yükleme Örneğimiz
09.04.2012-20:51 Tarihinde Eklendi.
www.seyfettinkahveci.com
Oy Sayısı: 16006026Toplam Puan: 66760 / Yorum Sayısı: 412006026 adet.
tarih.h:
#ifndef TARIH_H
#define TARIH_H
#include <iostream>//kütüphane sayfaya dahil ediliyor
using namespace std;//isim uzayı tanımlanıyor
class tarih//tarih adında bir sınıf oluşturuluyor
{
public://herkesin kullanabileceği blok
tarih(int sa,int da, int san);//constructor (parametre alan)
virtual ~tarih();//destructor
tarih* operator +(tarih *gelen);//artı işaretine aşırı yüklen fonksiyon yazılıyor
void ekranayaz();/fonksiyonla veriler ekrana yazılıyor
private://sadece bu sınıfın üyeleri olanların erişebileceği blok
int saat;//değişken tanımlanıyor
int dakika;//değişken tanımlanıyor
int saniye;//değişken tanımlanıyor
};
#endif // TARIH_H
tarih.cpp:
#include "tarih.h"//header sayfaya çağırılıyor
tarih::tarih(int sa,int da, int san)
{
saat=sa;//constructor a gelen veriler privatedaki değişkenlere aktarılıyor
dakika=da;//constructor a gelen veriler privatedaki değişkenlere aktarılıyor
saniye=san;//constructor a gelen veriler privatedaki değişkenlere aktarılıyor
}
tarih::~tarih()
{
//destructor
}
tarih* tarih::operator +(tarih *gelen){//artı işaretine aşırı yüklenen fonksiyonumuzu yazıyoruz. geri dönen değerin tarih sınıfından bir pointer olduğunu göstermek için tarih* dedik
tarih *gecici=new tarih(0,0,0);//gecici adında ilk değerleri 0 0 0 olan bir sınıf oluşturuluyor
gecici->saat=saat+gelen->saat;//gecicinin saati gelenin saatiyle ve fonksiyonu çağıran değişkenin saatiyle toplanıyor
gecici->dakika=dakika+gecici->dakika;//gecicinin dakikası gelenin dakikasıyla ve fonksiyonu çağıran değişkenin dakikasıyla toplanıyor
gecici->saniye=saniye+gelen->saniye;//gecicinin saniyesi gelenin saniyesiyle ve fonksiyonu çağıran değişkenin saniyesiyle toplanıyor
if(gecici->saniye>59){//gecicinin son durumdaki saniyesi 59dan büyükse
int elde,kalan;//değişken tanımlanıyor
elde=gecici->saniye/60;//dakikaya kaç ekleneceği bulunuyor
kalan=gecici->dakika%60;//saniyenin ne olacağı belirleniyor
gecici->dakika+=elde;//gecicinin dakikası elde değişkeniyle toplanıp gecicinin dakikasına eşitleniyor
gecici->saniye=kalan;//gecicinin saniyesine kalan değer aktarılıyor
}
if(gecici->dakika>59){//gecicinin son durumdaki dakikası 59dan büyükse
int elde,kalan;//değişken tanımlanıyor
elde=gecici->dakika/60;//saate kaç ekleneceği bulunuyor
kalan=gecici->dakika%60;//dakikanın ne olacağı belirleniyor
gecici->dakika=kalan;//gecicinin dakikasına kalan değer aktarılıyor
gecici->saat+=elde;//gecicinin saati elde değişkeniyle toplanıp gecicinin saatine eşitleniyor
}
return gecici;//tarih sınıfını temsil eden gecici nesnesi çeğırıldığı yere geri gönderiliyor
}
void tarih::ekranayaz(){//verileri ekrana yazan fonksiyonumuzu yazıyoruz
cout<<"saat: "<<saat<<" dakika: "<<dakika<<" saniye: "<<saniye<<endl;//veriler ekrana yazılıyor
}
main.cpp:
#include "tarih.h"//header sayfaya çağırılıyor
int main()
{
tarih *t1,*t2,*t3;//tarih sınıfını temsil edecek yeni pointer tipinde değişkenler tanımlanıyor *t1 olması t1in pointer olduğunun göstergesidir.
t1=new tarih(20,12,58);//t1 değişkenine ilk değerler atanıp dinamik yapı oluşturuluyor
t2=new tarih(14,10,12);//t2 değişkenine ilk değerler atanıp dinamik yapı oluşturuluyor
t3=(*t2)+t1;//t2 değişkeni aşırı yükleyen fonksiyonu çağırıyor ve değerler gönderiliyor return ile geri dönen veri t3 e aktarılıyor
t3->ekranayaz();//t3 değişkeninin verileri ekrana yazılıyor.
return 0;//program bitiriliyor
}
Kod Hakkında Anlamadığınız Bir Kısım Olursa Yorum Ekleye Yazın En Kısa Sürede Cevaplamaya Çalışırım.
Seyfettin KAHVECİ
Balıkesir Üniversitesi
NEF-BOTE
| Uzun süredir yorumlara cevap veremediğim için sistem yeni yorumlara kapatılmıştır. Anlayışınız için teşekkürler. |
| ||||||||

