Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 13940|Yanıt: 0

[C++] C++ dilinde şablonları düşünmek

[Bağlantıyı kopyala]
Yayınlandı 4.10.2014 20:45:19 | | |
Yüksek seviyeli dillerde, fonksiyonlar için overload kullanılır; bu, farklı fonksiyonlara sahip ancak aynı sayıda parametreye sahip fonksiyonlarda kullanılır ve farklı türler ve aynı sayıda parametre için şablonlar gereklidir
C++ applet

  1. #include<iostream>
  2. using namespace std;

  3. template <class T>
  4. T max(T a,T b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a,b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
Kopya kodu

Bu basit bir örnektir: anahtar kelime şablonu<sınıfı T> bir şablon yapısının başlangıcıdır, böylece maksimum değeri ararken aynı fonksiyonla birkaç C++ kodunu tekrar tekrar yazmak zorunda kalmayız
Bir fonksiyon çağrıldığında, tipi otomatik olarak eşleşir. Gösterilmesine gerek yok.
Yukarıdaki en temel kullanım şeklidir, ancak aşağıdaki durumlarla karşılaşacağız

  1. #include<iostream>
  2. using namespace std;

  3. template <class T,class E>
  4. E max(T a,E b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a;float b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
Kopya kodu

Fonksiyonumuzun iki farklı türe ihtiyacı olduğunda ne yapacağımızı düşünüyorum, yukarıdaki kodu okuduktan sonra anlayabileceğinizi düşünüyorum. Ama her neyse, ortak noktaları tiplerin otomatik olarak eşleşmesidir.
Aslında, hatalar da var; eğer tipi iyi eşleştiremezsek, yani "öküz kafası doğru değil", derleyicinin otomatik eşleştirmesi örtük tip dönüşüm kurallarına göre parametre tipini değiştirir ve bu da sonucun doğruluğunun kaybına yol açar.
Koda bak, deneyebilirsin.
  1. #include<iostream>
  2. using namespace std;

  3. template <class T,class E>
  4. E max(T a,E b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a;float b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
Kopya kodu
Yukarıdaki içerik çok zor değil ama keşfedilebilecek birçok yer de var, sizin ne düşünceniz olduğunu bilmiyorum





Önceki:c Inline tarafından yazılmış Mini program
Önümüzdeki:Forumum için yapılmış bir logo paylaştım ve herkese gösterdim!
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com