#include <iostream>
using namespace std;
template <class X, class Y>
Y big(X a, Y b)
{
if (a > b)
return (a);
else return (b);
}
int main()
{
cout << big(32.8, 9);
}
Di sini saya menggunakan template di CPP, jadi ketika saya memanggil fungsi big
mem-bypass argumen double
dan int
mengetik, saya ingin jawaban balik yang double
. Ketik di sini, ia mengembalikan 32
bukan 32.8
.
Bagaimana saya mendapatkan hasil yang saya inginkan? Bagaimana cara menulis jenis big
fungsi pengembalian yang tepat ?
std::max
penerapannya. Tipe pengembalian fungsi harus diketahui pada waktu kompilasi dalam C ++. Jadi Anda tidak dapat memiliki tipe pengembalian ini bergantung pada nilai runtime dari parameter Anda. Inilah sebabnya mengapa untuk fungsi tersebut, Anda memerlukan kedua parameter untuk memiliki tipe yang sama (yaitu, memiliki tipe X, tetapi tidak Y).