|
C++ ile Şablon Fonksiyonlar Yazmak |
|
Gönderiliyor lütfen bekleyin... |
|
|
C++ programlama
dili, C'den aldığı çok hoş sözdimi (elegant syntax) ve alt seviyelerde
ileri derecede esnek programlar yazmaya uygun olması ile gerçekten birçok bilgisayar
programcısının favorisi olmuştur. Bütün bunların yanında büyük çapta yazılım
geliştirirken gerçek dünyayı iyi bir şekilde modelleyen Nesne Yönemlimli Programlama
özelliklerini de programcıya sunması onu gerçekten bir numara yapmıştır diyebiliriz.
Bu yazımızda C++
dilinin esnek programlamayı destekleyen bir özelliğinin, fonksiyon şablonlarının
(function templates) üzerinde duracağız. Diyelimki bir programın içinde hem
tamsayıları, hem de kesirli sayıları toplayan fonksiyonlara ihtiyacımız var.
Bu durumda bir C programcısı muhtemelen tamsayi_topla(int sayi_1, int sayi_2)
ve kesirlisayi_topla(double sayi_1,double sayi_2) şeklinde iki farklı fonksiyon
yazardı. Aynı durumda bir C++ programcısı topla() isimli fonsiyonlara aşırı
yükleme (method overloading) ile topla(int sayi1, int sayi2) ve topla(double
sayi1,double sayi2) gibi aynı isimli iki tane fonksiyon yazar. İkinci durumda
programcı yine 2 fonksiyon yazar ama burda sadece bu fonksiyonların ait olduğu
sınıfın bir örneğini (instance) kullanan programcı rahat eder çünkü iki farklı
fonksiyon ismi bilmek yerine sadece bir fonksiyon ismi bilir ve bunların aldıklar
parametrelerin faklılıklarını bilir ve ona göre kullanır.
Yukarıdakilerin
yanında aynı işi yapan ve farkları aldıkları ve/veya dönderdikleri değerlerin
tipleri farklı olan n tane farklı fonksiyonu ayrı ayrı yazmak yerine bunlar
için şablon fonksiyon şeklinde sadece bir metod yazıp bu fonksiyonları ihtiyacımıza
göre çağırmak daha kolay olur. Hem böylelikle modern programlamadaki code-reuse
(kodun tekrar kullanılması) ilkesini sonuna kadar kullanmış oluruz.
Şablon fonksiyon
yazmak için öncelikle template< class
Tip > böyle
bir satırı fonksiyonumuzdan önce yazarız. Burdaki tip fonksiyomuzun çalışacağı
veri tipidir ki bu temel veri tipi veya bir sınıf tipi de olabilir. Sonrai satır
da ise Tip topla(Tip sayi1 , Tip sayi2
) önce, fonksiyonun
döndereceği veri tipini (bu void veya standart birşey de olabilir.), fonksiyon
adını ve parametreleri yazarız. Parametrelerin bir veya birkaçı da temel bir
veri tipi veya Tip'ten
farklı bir sınıf tipi veya struct olablir. Sonra ise normal fonksiyon yazımı
ile aynıdır.
Aşağıdaki
programda topla() isimli
şablon bir fonksiyonumuz var. Fonksiyon aldığı iki değişkeni toplayıp, toplamı
geriye dönderiyor. Fonksiyonu denemek için iki tane tamsayı, kesirli sayı ve
karakteri toplayıp sonuçlarını ekrana yazan kodları main()
fonksiyonu içinde yazıyoruz. Tabi enson dummy değişkenini
enson neden aldığmızı da tahmin ederseniz sanırım.
İleriki yazılarımızda
şablon şeklinde sınıflar yazma konusuna da yer vermeyi düşünüyorum. Şimdilik
sizlere başarılar dilerim..
#include
template< class Tip >
Tip topla(Tip sayi1 , Tip sayi2 )
{
return (sayi1+sayi2);
}
int main()
{
int tamSayi1=5, tamSayi2=10;
double kesirliSayi1=22.33, kesirliSayi2=55.26;
char karakter1='A', karakter2='B';
char dummy;
cout << "˜ki
tamsayı : "<< tamSayi1 << " ve " << tamSayi2;
cout << " toplayınca = " << topla(tamSayi1,
tamSayi2)<< endl <
cout << "˜ki
double : "<< kesirliSayi1 << " ve " <<
kesirliSayi2;
cout << " toplayınca = " << topla(kesirliSayi1,
kesirliSayi2) << endl<
cout << "˜ki
karakteri : "<< karakter1 << " ve " <<
karakter2;
cout << " toplayınca = " <<
topla(karakter1, karakter2)<< endl <
cin >> dummy;
return 0;
}
|
Makale:
C++ ile Şablon Fonksiyonlar Yazmak C++ ve C++.NET dili Ahmet Faruk Nacaroğlu
|
|
|
-
-
Eklenen Son 10
-
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
|
|