当一个函数(被调用者)返回一个数量给调用者函数时,它是由 值(value)还是引用?
问题是我编写了一个函数,它在调用时构建了一个非常大的 vector 。我想通过常量引用将这个大 vector 返回(在本例中为 main()
),以便我可以对其进行进一步处理。
我很怀疑,因为有人告诉我,当 C++ 函数返回并终止时,与该函数关联的所有变量/内存都会被清除干净。
struct node{
string key;
int pnum;
node* ptr;
}
vector< vector<node> > myfun1(/*Some arguments*/)
{
/*Build the vector of vectors. Call it V*/
return v;
}
int main(void)
{
a=myfun1(/* Some arguments */)
}
最佳答案
C++ 函数可以按值、按引用(但不按引用返回局部变量)或按指针(同样,不按指针返回局部变量)返回。
当按值返回时,编译器通常可以进行优化,使其与按引用返回一样快,而不会出现悬空引用的问题。这些优化通常称为“返回值优化 (RVO)”和/或“命名返回值优化 (NRVO)”。
另一种方法是调用者提供一个空 vector (通过引用),并让函数填充它。然后它不需要返回任何东西。
您绝对应该阅读这篇博文:Want Speed? Pass by value.
关于c++ - C++ 中的函数按值返回还是按引用返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7456778/