c++ - 模板调用有什么区别?

标签 c++ templates

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
}

最佳答案

第一次调用 max实际上是max<float> ,第二个和第三个是一样的max<double>

但在第二次调用中 ab晋升为双倍,其中第三个例子只有6.0f提升为双倍。

关于c++ - 模板调用有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40887695/

相关文章:

C++ MAC OS X 无法写入 ~/Library/Application Support/<appname>

c++ - 将模板转换为任意类型时如何避免编译器错误

c++ - 如何使用模板化构造函数定义推导指南?

c++ - 如何放置一个以模板类的对象为参数的函数?

c++ - 使用带有冗余信息的键字符串的 map ?

c++ - friend 调用虚拟私有(private)方法 - 应该发生什么

c++ - 用于制作语音聊天应用程序的库

c++ - 禁止使用模板化的虚拟成员函数,有替代方法吗?

C++ 模板化构造函数 : Do they prevent certain types from being inferred?

c++ - 在 C++ 中是否可以遍历抽象类的所有子类?