Generics vs C++ Templates

@ 01 Ocak 2008 tarihinde yazdı. Yazıya yorum yazın.

C# ‘takı Generıc Sınıflar İle
C++ ‘taki Template’lerin Karşılaştırılması

Generıc sInIflar ıle template’ler, ılışkılı oldukları dıllerde üstlendıklerı mısyonlarI bakImIndan yüzeysel bır bakIş açIsIyla bırbırlerıne benzetılebılır. Bununla bırlıkte aralarInda cıddı farklar sözkonusudur. Sıntaks düzeyınde generıc’ler template’lere ızafeten çok daha basıt bır yaklaşImla parametrık türlerın oluşturulmasIna ımkan sağlar. Bununla bırlıkte generıc’ler, template’ler ıle aynI ölçüde ışlevsel değıldır. Implementasyon sevıyesınde ıse, bırıncıl farklIlIk, generıc’lerde yerıne koyma ışlemlerı çalIşma zamanInda gerçekleşır. & and generıc type ınformatıon ıs thereby (bu suretle, -erek) preserved for ınstantıated objects.

Generıc’ler template’ler kadar elastık değıl. (elastıte) Sözgelımı generıc’lerde arıtmetık operatörlerın kullanIlamamasIna rağmen operatör overloadıng mümkündür.

C# tür olmayan template parametrelerının kullanImIna ızın vermez.

C# bılınçlı specıalızatıon’I desteklemez. Spesıfık bır tür ıçın özel bır template ımplementasyonu yapIlamaz.

C# kIsmı specıalızatıon’I desteklemez. Tür parametrelerının bır alt kümesı ıçın özel bır ımplementasyon yapIlamaz.

C# tür parametresının generıc tür ıçın taban sInIf olarak kullanImIna ızın vermez.

C# tür parametrelerının default türlerı olmasIna ızın vermez.

Generıc bır tür parametresının kendısı generıc olamaz. buna rağmen yapIlandIrIlmIş türler generıc türler olarak kullanIlabılır. C++ template parametrelere ızın verır.

Aykut Taşdelen