2
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是原始类型。

4

1 回答 1

4

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

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

于 2011-12-19T21:12:42.070 回答