代码之家  ›  专栏  ›  技术社区  ›  user827992

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

  •  0
  • user827992  · 技术社区  · 14 年前

    在我的代码中,我有 int s bool s pointer 等等,我还定义了一些类型 typedef ,我如何像使用contunctor的对象中那样管理默认值初始化?

    我想确定

    T var;
    

    如果未被修改,则始终等于我的默认值,我喜欢这样做,而无需解析每一行代码,也无需手动更改默认值,并且无需使用预处理器宏。

    这可能吗? 新的 类型定义 是否可以定义默认值?

    3 回复  |  直到 14 年前
        1
  •  6
  •   Xeo    14 年前

    在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变量; 公告

        2
  •  3
  •   shoosh    14 年前

    这对于基元类型是不可能的,因为它们没有构造函数。在函数作用域的上下文中声明的基元类型默认情况下不会初始化,并且包含垃圾。在全局范围中声明为全局变量的基元变量始终初始化为 0

        3
  •  0
  •   Desmond Hume    14 年前

    没有办法实现这一点 int s bool s、 指针和其他基元数据类型,而不必在声明这些类型的值时编写一些额外的代码。但是对于您的自定义类的实例,有。