我是C++的新手,大括号初始化(或统一初始化)确实让人困惑。当函数返回大括号中的参数列表时,具体会发生什么?非常感谢你的清洁工。
std::vector<double> foo() { return {1, 2}; // is this the same as: std::vector<double>{1, 2} or std::vector<double>(1, 2)? or something else? }
,返回值是从列表初始化的,因此返回的/code>包含两个值为和的元素。
,返回值是从复制初始化的,因此,返回的包含两个值为和的元素。在概念上,它将构造一个临时的,返回值从临时的;由于强制复制省略(自C++17以来),复制/移动操作被省略,效果与第一种情况完全相同。
(1,2)/code>,返回值是从(1,2)/code>复制初始化的,因此返回的/code>包含值为的1个元素。强制复制删除在这种情况下也生效。