gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 00:40:16 26 4
gpt4 key购买 nike

关于 their webpage , 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();
}

开始的行中使用的 C++ 功能是什么:drawing{fm}.draw...

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

最佳答案

它被称为统一初始化,是在 C++11 中添加的。参见例如Bjarne's page了解更多信息。

在您的特定示例中,drawing 的未命名实例是使用 fm 作为 drawing 构造函数的实际参数构造的。然后在这个 drawing 实例上调用 draw 方法。这也可以使用普通括号编写:

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

有一些细微差别:也就是说,使用 {} 会支持采用 initializer_list 的构造函数(如果存在这样的构造函数);使用 {} 可避免 Most Vexing Parse ;并使用 {} 避免参数的隐式有损缩小。参见 this GotW了解更多详情。

关于c++11 - 此 Nana 演示代码中使用的 C++ 功能是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31180156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com