如何初始化模板类型变量?

时间:2011-12-19 21:11:03

标签: c++ static-cast class-template variable-initialization

template <class T>
void MyClass<T>::MyMethod()
{
    // ...

    // Which of the following initialization is better?
    T MyVariable1 = 1;                  // 1st
    T MyVariable2 = 2.0;                // 2nd
    T MyVariable3 = static_cast<T>(3);  // 3rd

    // ...
}

哪一个更好?

编辑:T是原始类型。

1 个答案:

答案 0 :(得分:4)

如果T只能是原始类型(intfloat等),我认为没有任何区别;在所有情况下,编译器都将执行相关的转换(并且可能会在编译时执行替换)。

如果T是用户定义的类型,那么显然这些不会编译,除非它定义了适当的构造函数。此时,它可能会有所不同(例如,如果您同时定义了T::T(int)T::T(double))。