使用大括号(语法)进行C++对象初始化

use*_*664 3 c++ syntax

我刚遇到这行代码:

SDL_Color textColor = { 255, 0, 255 };
Run Code Online (Sandbox Code Playgroud)

它让我想知道为什么它可以被声明为数组.我认为它可能只是textColor(255,0,255);一样,但当我尝试自己上课时,它并没有像那样工作.任何人都可以解释何时使用这种语法?参数在哪里??

jua*_*nza 10

它是类型的聚合初始化,很可能是简单的结构或类.例如,

struct Foo 
{
  int i,j;
  double x,y;
};

int main()
{
  Foo f = {1,2, 3.,4.};
}
Run Code Online (Sandbox Code Playgroud)

注意,由于存在一些混淆structs,上面的例子也适用于a class,在这种情况下它与struct:

class Foo 
{
 public:
  int i,j;
  double x,y;
};
Run Code Online (Sandbox Code Playgroud)

在C++ 11中,这种类型的初始化在某些条件下扩展到非聚合类型.

例如

std::vector<int> v = {1,2,3,4,5};
Run Code Online (Sandbox Code Playgroud)