将来这个初始化语法在即将到来的c ++ 0x标准中有效吗?

时间:2010-07-16 10:21:52

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

假设我们有以下两个类:

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'});

1 个答案:

答案 0 :(得分:2)

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

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

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