C++11 什么是C++;此Nana演示代码中使用的功能?

C++11 什么是C++;此Nana演示代码中使用的功能?,c++11,nana,C++11,Nana,在上,Nana GUI人举了一个例子: #include<nana/gui.hpp> int main() { using namespace nana; form fm; drawing{fm}.draw([](paint::graphics& graph){ graph.string({10, 10}, L"Hello, world!", colors::red); }); fm.events().cl

在上,Nana GUI人举了一个例子:

#include<nana/gui.hpp>

int main()
{
     using namespace nana;
     form fm;
     drawing{fm}.draw([](paint::graphics& graph){
         graph.string({10, 10}, L"Hello, world!", colors::red);
     });
     fm.events().click(API::exit);
     fm.show();
     exec();
}
#包括
int main()
{
使用名称空间nana;
表格fm;
绘图{fm}.draw([](绘图::图形和图形){
字符串({10,10},L“你好,世界!”,颜色::红色);
});
fm.events()。单击(API::exit);
fm.show();
exec();
}

在开始的行中使用的C++特征是什么:绘制{FM}……绘制……/P>


我从未见过像这样使用{}。

它被称为统一初始化,是在C++11中添加的。有关更多信息,请参见例如

在您的特定示例中,
drawing
的未命名实例使用
fm
作为
drawing
的构造函数的实际参数进行构造。然后在此
drawing
实例上调用
drawing
方法。这也可能是使用正常参数编写的:

drawing(fm).draw([](paint::graphics& graph){
     graph.string({10, 10}, L"Hello, world!", colors::red);
 });

有一些细微的区别:即使用
{}
将有利于采用
初始值设定项列表的构造函数(如果存在这样的构造函数);使用
{}
可以避免;并且使用
{}
可以避免隐式的有损参数缩小。有关更多详细信息,请参阅。

因此正在构造一个临时或未命名的“绘图”对象,并将fm变量传递给构造函数,然后新对象将调用其draw()函数。对吗?考虑可读性。是的,我能看懂。但是这样做的时候,我在画{fm}…
的时候也有点磕磕绊绊。你并不孤单,史酷特。