提问者:小点点

返回大括号中的构造函数参数?


我是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?
}

共1个答案

匿名用户

,返回值是从列表初始化的,因此返回的/code>包含两个值为的元素。

,返回值是从复制初始化的,因此,返回的包含两个值为的元素。在概念上,它将构造一个临时的,返回值从临时的;由于强制复制省略(自C++17以来),复制/移动操作被省略,效果与第一种情况完全相同。

(1,2)/code>,返回值是从(1,2)/code>复制初始化的,因此返回的/code>包含值为的1个元素。强制复制删除在这种情况下也生效。