c++ - 在C++中将特定类型的所有变量初始化为特定的默认值

标签 c++ default-value

在我的代码中,我有 intboolpointer 等等,我也有一些我定义的类型typedef,我如何管理默认值初始化,就像它发生在带有构造函数的对象中一样?

我想确定

T var;

如果未更改,则始终等于我的默认值,我喜欢在不解析每一行代码并手动更改默认值且不使用预处理器宏的情况下执行此操作。

这可能吗? 对于新的 typedef 是否可以定义默认值?

最佳答案

在 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; 声明保留。

关于c++ - 在C++中将特定类型的所有变量初始化为特定的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11493701/

相关文章:

c++ - Socket 客户端始终连接到本地主机

Django:数据库中的默认值,而不仅仅是 ORM

c# - 为什么 C# 局部变量应该直接赋值,即使它是默认值?

c++ - 替代虚拟模板

c++ - 从目录 C++ 打开多个文件

php - MySQL 默认 date() + 14 天,对于一个列?

python - 如何根据先前的参数定义默认参数值?

android - 使用 setOnItemSelected 在 SharedPreferencies 中加载和保存 Spinner 选择

c++ - 什么时候调用 CMFCListCtrl::OnGetCellBkColor 函数?

c++ - Allegro:链接器未正确链接库 [Code::Blocks]