我遇到了该push_back
函数的以下语法。Vertex
只是一个包含三个浮点x,y和z的结构。第二行看起来就像写它一样。但是第一行对我来说很奇怪。在解释该视频的视频中,据说这是通过成员初始化器列表完成的,但看起来更像是隐式转换。我只是被那里的花括号弄糊涂了。谁能解释为什么这种语法有效?
std::vector<Vertex> vertices;
vertices.push_back({ 1, 2, 3 });
vertices.push_back(Vertex(1, 2, 3));
这不是成员初始化程序列表,而是副本列表初始化(自C ++ 11起)。
7)在函数调用表达式中,将braced-init-list用作参数,并使用list-initialization初始化函数参数
vertices.push_back()
期望以aVertex
作为参数,braced-init-list { 1, 2, 3 }
用于构造一个临时变量,该临时变量将Vertex
传递给push_back
以后。如您所说,您也可以将其视为隐式转换,即从braced-init-list到的转换Vertex
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句