2
有人能告訴我在以下兩種情況下編譯器有什麼不同嗎?返回類型的重載函數? (重新訪問)
#include <cstdio>
using namespace std;
template <typename TReturn, typename T>
TReturn convert(T x)
{
return x;
}
int main()
{
printf("Convert : %d %c\n", convert<int, double>(19.23), convert<char, double>(100));
return 0;
}
和
int convert(double x)
{
return 100;
}
char convert(double x)
{
return 'x';
}
int main()
{
printf("Convert : %d %c\n", convert(19.23), convert(100)); // this doesn't compile
return 0;
}
是否第一種情況下沒有函數重載?
你的第二種情況無效。它編譯的唯一原因是因爲你鍵入'covert',而不是'convert'。你不能聲明具有唯一的返回類型是不同的兩個名稱相同的功能。 – 2011-04-12 20:50:43