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ı: 16005710Toplam Puan: 63600 / Yorum Sayısı: 412005710 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. |
|