【发布时间】:2017-10-30 18:33:11
【问题描述】:
考虑以下代码:
template<class T>
void someFun() {
T t;
// stuff with t
}
在这里我可以确定,如果T 是可默认构造的struct 或class,那么t 应该被初始化为其默认值。
但是,例如,如果T 是int,那么它将在此处未初始化。嗯,int 的直观“默认初始化”应该意味着它应该被初始化为零。
如果T 是类类型,我正在寻找一种方法来调用T 的默认构造函数,如果它是标量类型,则将其初始化为零。
这行得通吗?
template<class T>
void someFun() {
T t{};
// stuff with t
}
AFAIK 在上面的示例中,如果 T 是类类型,则将调用其默认构造函数,但如果它是 int 或其他标量类型,我可以确定它为零吗?
【问题讨论】:
-
我 99% 确定答案是肯定的。至少,我知道
int foo = {}将其初始化为 0。正在搜索源... -
“这行得通吗?”嗯,你试过了吗?成功了吗?
-
@DimChtz 这在 C++ 中不太适用。它可能看起来很有效,但实际上并不有效
-
AFAIK,
T t{};保证该值将是默认构造和初始化的,只要该类型存在默认构造,它适用于所有基本类型。
标签: c++ initialization default-constructor