A,B和C电话有什么区别?
#include <iostream>
using namespace std;
template<class T> T max(T a, T b) {
return (a >= b) ? a : b;
}
int main() {
float a = 4.0;
float b = 6.0f;
cout << max(a, b) << endl; //A
cout << max<double>(a, b) << endl; //B
cout << max<double>(4.0, 6.0f) << endl; //C
}
答案 0 :(得分:2)
max<float>
的第一次调用实际上是max<double>
,第二次和第三次调用是a
但是在第二次调用中,b
和6.0f
都被提升为double,其中第三个示例{{1}}被提升为double。
答案 1 :(得分:-1)
调用std::max<float>
,因为a和b是浮点参数。在B和C中,强制它调用std::max<double>
,因此两个参数都转换为double。