Kita baru saja mempelajari tentang fungsi kelebihan beban , yang dapat menangani beberapa tipe data. Meskipun memiliki nama yang sama, keduanya tetap perlu didefinisikan secara terpisah. Untuk tujuan ini, C++ menyediakan mekanisme templat fungsi, yang sangat meningkatkan penggunaan kembali kode.
Templat fungsi memungkinkan Anda membuat fungsi umum yang mendukung beberapa parameter formal. Gunakan templat kata kunci untuk mendefinisikannya dalam bentuk berikut:
templat<nama tipe kelas 1, nama tipe kelas 2...> nama fungsi nilai balik (kolom daftar parameter formal) daftar parameter templat {badan fungsi}Untuk menjelaskannya, dalam bentuk umum ini, templat di baris pertama <nama tipe kelas 1, nama tipe kelas 2...> adalah pernyataan deklarasi templat adalah kata kunci yang mendefinisikan fungsi templat tanda kurung sudut. Yang sebelumnya adalah Gunakan kelas (atau ketik nama untuk mendefinisikan). Kemudian ikuti dengan templat fungsi yang ditentukan. Ingatlah untuk tidak menambahkan pernyataan lain di tengah, jika tidak, kesalahan akan dilaporkan!
Di bawah ini, mari kita lihat contoh spesifiknya!
#include<iostream>usingnamespacestd;template<classT1,classT2>T1add(T1x,T2y){cout<<sizeof(T1)<<,<<sizeof(T2)<<t;returnx+y;}intmain(){ cout<<tambah(10,20)<<endl;;cout<<tambah(3.14,5.98)<<endl;cout<<tambahkan('A',2)<<endl;return0;}Di atas adalah template untuk fungsi penjumlahan. Anda dapat melihat bahwa kita telah mendefinisikan template fungsi penambahan, dan tipe variabel di dalamnya digantikan oleh T1 dan T2.
Dalam fungsi utama, ketika kita benar-benar memanggilnya, kita memanggilnya tiga kali, meneruskan tiga tipe berbeda. Tipe T1 dan T2 dalam fungsi templat akan diubah menjadi tipe tertentu sesuai dengan tipe sebenarnya yang diteruskan. Transformasi ini disebut contoh perubahan templat.
Kemudian kita jalankan programnya dan kita bisa melihat tipe T1 dan T2 apa yang dipanggil setiap kali, berapa byte, dan hasil penjumlahannya. Efek yang berjalan adalah sebagai berikut:

Anda dapat memahami kode baris demi baris dan menyelesaikan eksperimennya sendiri.