初始化列表是否禁止对构造函数的调用?

Tho*_*son 3 c++

如果我使用默认构造函数声明一个类并使用如下的初始化列表定义此类的实例,是否会为此定义调用默认构造函数?为什么被叫或被叫?

class Sample
{
// this should be any aggregate type in c++
};

int main()
{
  Sample s = {0};
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

ice*_*ime 5

  • 在C++ 03中,只有聚合类可以用花括号初始化,聚合类可能没有用户定义的构造函数
  • 在C++ 0x中,通过初始化列表支持非聚合类型的此语法,并调用相应的构造函数(取一个std::initializer_list)