我今天有以下代码:
std::vector<float>& vecHighRes = highRes->getSamples();
PMHighResolution.cpp / .h
std::vector<float>& getSamples();
static std::vector<float> fSamples;
std::vector<float>& PMHighResolution::getSamples()
{
return fSamples;
}
为什么在那里需要&两次?在返回中,我认为是因为否则会生成要返回的向量的副本,但是为什么我需要在assign运算符中使用它(
std::vector<float>& vecHighRes = highRes->getSamples();
)?
的&
在LHS意味着vecHighRes
是一个参考:
std::vector<float>& vecHighRes = highRes->getSamples();
如果您省略了&
,vecHighRes
则将是vector的副本,该副本是fSamples
根据所返回的引用构造的getSamples
。
与此相同:
int a = 42;
int& b = a; // b is a reference to a
int c = b; // c is a copy of a
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句