Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 13940|Jawab: 0

[C++] Memikirkan template di C++

[Salin tautan]
Diposting pada 04/10/2014 20.45.19 | | |
Dalam bahasa tingkat tinggi, kami menggunakan kelebihan beban untuk fungsi, yang digunakan dalam fungsi dengan fungsi yang berbeda tetapi dengan jumlah parameter yang sama, dan templat diperlukan untuk jenis yang berbeda dan jumlah parameter yang sama
Applet C++

  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. }
Salin kode

Ini adalah contoh sederhana: kata kunci template<class T> adalah awal dari struktur template, sehingga kita tidak perlu menulis beberapa kode C++ dengan fungsi yang sama berulang kali saat mencari nilai maksimum
Perhatikan bahwa saat memanggil fungsi, jenisnya secara otomatis cocok. Itu tidak perlu ditampilkan.
Di atas adalah penggunaan paling dasar, tetapi kita akan menghadapi situasi berikut

  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. }
Salin kode

Apa yang harus dilakukan ketika fungsi kita membutuhkan dua jenis yang berbeda, saya pikir Anda dapat memahaminya setelah membaca kode di atas. Tapi bagaimanapun, kesamaan yang mereka miliki adalah bahwa jenisnya secara otomatis cocok.
Faktanya, kita juga memiliki kesalahan, jika kita tidak dapat mencocokkan jenisnya dengan baik, yaitu "kepala banteng tidak benar", maka pencocokan otomatis kompiler akan mengubah jenis parameter sesuai dengan aturan konversi tipe implisit, yang pada akhirnya akan menyebabkan hilangnya akurasi hasil.
Lihat kodenya, Anda bisa mencoba.
  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. }
Salin kode
Konten di atas tidak terlalu sulit, tetapi ada juga banyak tempat yang bisa dijelajahi, saya tidak tahu apa pendapat Anda





Mantan:c Program mini yang ditulis oleh Inline
Depan:Saya memposting logo yang dibuat untuk forum saya dan menunjukkannya kepada semua orang!
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com