C++ ile +(artı) Operatörünü Pointer İle Aşırı Yükleme Örneğimiz


09.04.2012-20:51 Tarihinde Eklendi.
www.seyfettinkahveci.com Derecelendirme: 10 / 10 Oy Sayısı: 16002983Toplam Puan: 36330 / Yorum Sayısı: 412002983 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



Yazının tamamının kopyalanması yasaktır. En baştaki birkaç paragrafı kopyalayıp, yazıya link verebilirsiniz. Aksi durumda uyarılmaksızın yasal yollara gidilecektir.

Yorum Ekle

Ad Soyad:
Şehir:
Yorum:
Yorumlar
Bu makale için henüz hiç yorum yapılmamış.
Unutmayın Makalelere Yorum Yazmak Yeni Makalelere Teşviktir.