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
是原始类型。
答案 0 :(得分:4)
如果T
只能是原始类型(int
,float
等),我认为没有任何区别;在所有情况下,编译器都将执行相关的转换(并且可能会在编译时执行替换)。
如果T
是用户定义的类型,那么显然这些不会编译,除非它定义了适当的构造函数。此时,它可能会有所不同(例如,如果您同时定义了T::T(int)
和T::T(double)
)。