C++ C++;模板默认构造函数
我对模板有点问题:C++ C++;模板默认构造函数,c++,templates,constructor,default,keyword,C++,Templates,Constructor,Default,Keyword,我对模板有点问题: template <typename T> T Func(){ std::string somestr = ""; // somestr = ... if (somestr != ""){ return boost::lexical_cast<T>(somestr); } else{ T ret; // warning: "ret may be uninitialized in
template <typename T>
T Func(){
std::string somestr = "";
// somestr = ...
if (somestr != ""){
return boost::lexical_cast<T>(somestr);
}
else{
T ret; // warning: "ret may be uninitialized in this function"
return ret;
}
}
谢谢
ret
可能未初始化,因为T
可能是POD类型或没有用户声明构造函数的其他类型
您可以调用默认构造函数(并初始化任何POD类型对象的值),如下所示:
或者更简洁地说
return T();
这假设T
是默认可构造的。如果您可能需要使用不可默认构造的类型实例化此函数,则可以将“default”案例作为参数。比如说,
template <typename T>
T Func(const T& default_value = T())
{
// ...
}
模板
T Func(常数T&默认值=T())
{
// ...
}
这将允许您仍然为默认可构造的类型调用Func()
,但也可以为不可构造的类型显式提供返回值
return T();
template <typename T>
T Func(const T& default_value = T())
{
// ...
}