在这本书由安德鲁·柯尼希,加速C++,他给出了下面的代码:关于传递一个临时对象const引用
vector<double> emptyvec()
{
vector<double> v; // no elements
return v;
}
grade(midterm, final, emptyvec());
现在,高档功能需要一个常量引用vector<double>
。这对我来说意味着emptyvec()返回的临时对象应该被复制,因为它是作为局部变量在栈中创建的,并且对我而言似乎很陌生。这是如何工作的?在另一页上,他将一个const引用传递给一个函数,该函数根据值取其参数并修改它们。是否可以将vector<double>
的const引用传递给参数期望为vector<double>
的函数?
什么让你认为通过引用传递的向量应该被复制? (你的第二个问题应该是第二个问题,并带有适当的代码示例。) –
其实,我有点困惑。该矢量可能是通过矢量构造函数在堆中初始化的,对吧?通过返回值而不是引用,毕竟'emptyvec'返回一个不是引用的向量,v的值应该被复制到等级参数中,这就是我的看法。 – meguli
你说的“等级函数需要一个const引用”,但在你的最后一句话中,你说“函数的参数期望向量” –