【问题标题】:will be this initialization syntax valid in upcoming c++0x standard?这种初始化语法在即将到来的 c++0x 标准中有效吗?
【发布时间】:2011-03-16 21:14:03
【问题描述】:

假设我们有以下两个类:

class Temp{
 public:
  char a;
  char b;
};
class Final{
 private:
  int a;
  char b;
  char c;
 public:
  Final(Temp in):b(in.a),c(in.b){}
  //rest of implementation
};

我们能否在即将发布的 c++0x 标准中使用以下语法初始化 Final 类的对象:

Final obj(Temp{'a','b'});

【问题讨论】:

    标签: c++ syntax constructor initialization c++11


    【解决方案1】:

    C++0x 为 POD 结构和数组类型添加了统一初始化,对所有类型使用大括号 ({}) 以及特殊的初始化列表来支持其中的可变数量的元素/参数,就像数组一样。所以你的例子可以写成:

    Final obj = { { 'a', 'b' } };
    

    Final obj { { 'a','a' } };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-06
      • 2012-06-04
      • 2021-04-26
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多