Function Template

Bu makale sizlere C++ template fonksiyonlardan bahsedeceğim. Template, kelimesine zaten çoğumuz yabancı değiliz. İster Web olsun ister Desktop olsun bütün programcılar template yazmış veya kullanmışlardır. Biz yine de C++ dilinde template function ne anlama gelir açıklayalım.

Template function, bir kereye mahsus olmak üzere yazılan ve bütün tipler üzerinde kullanılan generic fonksiyonlardır. Yani template olarak yazdığımız bir karşılaştırma fonksiyonunu hem integer, hem double hem de char tipleri için kullanabiliriz. Yine bir örnekle template function olayına bir göz atalım


Yukarıdaki compare fonksiyonu bir template fonksiyondur. Kendisine gelen değerlerin tipine bakmaksızın karşılaştırır. Bu özellik dilin esnekliğini artıran bir özelliktir. Aynı zamanda yazılan bir tane template fonksiyonu yıllar sonra bile kullanılabilir çünkü 2 integer, 2 double veya 2 char’ın hiçbir zaman karşılaştırma kriterleri değişmeyecektir.
Bir fonksiyonu template yapmak için fonksiyonun hemen üstüne template keyword ’unu ekliyoruz. Ardından da <class T> ifadesini yazıyoruz. Buradaki T harfinin bir özelliği yoktur. Bunun yerine istediğiniz kelime ya da harfi kullanabilirsiniz. Ayrıca class kelimesi yerine de typename kelimesini kullanan programlar da karşınıza çıkabilir. class ile typename arasında hiç bir fark yoktur.
C++ dilinde sadece fonksiyonlar değil, class’larda template yapılabilirler. Bu olaydan STL( Vector ) adlı yazımda bahsetmiştim. Template fonksiyonların temel çalışma mantıkları aynıinline fonksiyonlarda veya MACRO’larda olduğu gibidir. Compiler fonksiyonun çağırıldığı alanı bularak kodu çağıran tipler için özelleştirilmiş bir fonksiyon türetir ve bu alana yapıştırır. Bu nedenle program boyutu büyür ve çalışma süresi yavaşlar ama generic bir programlama sağladığı için template C++ dilinde önemli bir yere sahiptir. İterative fonksiyonlarda olduğu gibi recursion fonksiyonlarda da bu özellik kullanılabilir.

Popular posts from this blog

Polya’nın Problem Çözme Teknikleri

Mikroislemci Temelleri