在我的代码中我有int
s,bool
s,pointer
等等,我也有typedef
定义的某种类型,我怎么能管理默认值初始化,就像在具有控制器的对象中一样?
我想确定
T var;
如果不接触,总是等于我的默认值,我喜欢这样做而不解析每行代码,并且手动更改默认值而不使用预处理器宏。
这可能吗? 对于新的typedef
,可以定义默认值吗?
答案 0 :(得分:6)
在C ++ 11中,您可以编写T var{};
以将值初始化设置为默认值。
在C ++ 03中,您可以编写一个非POD包装器,其默认构造函数将由T var;
调用:
template<class T>
struct default_initializer{
default_initializer() : value() {}
default_initializer(T const& v) : value(v) {}
T value;
};
// somewhere in code
default_initializer<T> var; // calls default ctor and initializes 'value'
// to its default value
这将允许您安全地默认初始化甚至原始,POD和聚合类型,这些类型通常由T var;
声明保持未初始化。
答案 1 :(得分:3)
这对于原始类型是不可能的,因为它们没有构造函数。在函数作用域的上下文中声明的基本类型默认情况下不会初始化并包含垃圾。在全局范围内声明为全局变量的原始变量始终初始化为0
。
答案 2 :(得分:0)
无法在int
s,bool
,指针和其他原始数据类型实现此目的,而无需在声明此类型的值时编写其他代码。但是对于自定义类的实例,有。