【发布时间】:2014-02-13 16:19:21
【问题描述】:
我有一个返回模板类型的默认构造值的函数:
template<typename T>
T do_stuff()
{
return T();
}
我是这样使用的:
int main(int argc, char** argv)
{
std::string str("hello");
int a = 10;
int *p = &a;
str = do_stuff<std::string>();
a = do_stuff<int>();
p = do_stuff<int*>();
return 0;
}
使用后我有:str 是一个空字符串,a eqauls 0 和 p 是一个空指针。
我可以理解为什么std::string 变量会变成一个空字符串(它具有构造一个空字符串的默认构造函数)。
但是为什么 int 变量变成 0 而指针变成空指针。
它是默认模板行为吗?
我在 Linux Centos 下使用 gcc 4.6.6。
【问题讨论】:
-
这是应该发生的,作为它们的默认值。
-
T()是值初始化,意思是基本类型的零初始化。 -
不只是在模板中。
标签: c++ templates default-value