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
是原始类型。
最佳答案
如果T
只能是原始类型(int
、float
等),我认为没有什么区别;在所有情况下,编译器都会执行相关转换(并且可能会在编译时执行替换)。
如果T
是用户定义的类型,那么显然这些将无法编译,除非它定义了适当的构造函数。在这一点上,它可能会产生影响(例如,如果您同时定义了 T::T(int)
和 T::T(double)
)。
关于c++ - 如何初始化模板类型变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8567628/