返回 C++ 函数中的引用
returning references in c++ functions
尽管我认为我支持引用,但我不知道这两者之间是否有区别(两者都有效(:
(includes and that stuff)
//doesn't return a reference to a vector
vector<int> ref_to_vec1(vector<int>& vec) {
vec.push_back(whatever);
return vec;
}
//returns a REFERENCE to a vector
vector<int>& ref_to_vec2(vector<int>& vec) {
vec.push_back(whatever);
return vec;
}
vector<int> v;
//Both append whatever to v
ref_to_vec1(v);
ref_to_vec2(v);
返回带有函数的引用有什么意义?
在这种情况下,返回任何东西有什么意义?你只需要用向量调用函数,而不给函数的结果分配任何东西。
谢谢!
在这种情况下,返回任何东西有什么意义?你 只需要用向量调用函数,无需赋值 函数结果的任何内容。
无。也许是一个指示失败或成功的bool
(这就是 WinAPI 所做的(,但除此之外,如果您在要填充的参数列表中使用引用而不是使用函数的返回值,那么您根本不需要返回任何内容。
返回
引用的目的是避免复制要返回的对象。 ref_to_vec1()
复制*返回时传递给它的vec
,并保存返回值:
auto v2 = ref_to_vec1(v); // v2 is a copy of v, changing v2 doesn't change v
auto& v3 = ref_to_vec2(v); // v3 is a reference to v, any changes made to v3 are made to v too.
*除非它被 (N(RVO 优化或移动(C++11 或更高版本(。
案例 1 显而易见,正如米哈伊尔所解释
的那样情况 2 您的函数创建一个新对象并返回对它的引用,或者提供对已实例化内容的访问;例如单例
情况3:你想要链接运营商,通常发生在流媒体运营商身上; myStream <<firstVal <<secondVal;
我很确定这个问题是重复的,并且必须在这个网站上已经有很好的答案
如果不使用 reference,则有第二个向量对象,它从函数返回。
,混淆的一部分是概念上有两组函数 - 以某种方式处理参数并返回其结果的函数,以及作用于参数的函数。有些语言甚至在语言中内置了这种区别 - 例如,在Pascal中,你有"过程"和"函数"。前者不能返回任何东西,而后者必须返回。
你在你的情况下,是一个程序性的东西——它作用于论点,在你的情况下,添加一个元素。它通常不需要返回任何内容(vector::push_back()
永远不会失败(。
- C++有什么方法可以在既不调用函数模板也不提供其模板参数的情况下引用函数模板?
- 无法将右值引用函数与 GCC 匹配
- C ++引用函数参数似乎包含原始对象的副本,而不是充当"real reference"
- 通过引用函数传递指针参数是什么意思?
- 常量引用函数参数的地址何时唯一?
- 我想了解为什么在这个例子中使用引用函数?或者引用在c++函数中的重要性
- C++ 通过引用函数传递数组,但内容保持不变
- 用数组或指针引用函数?
- 引用函数如何"int &foo();"工作?
- 常量引用函数参数:是否可以禁止临时对象?
- 计算在代码中引用函数的次数
- <initializer_list> 引用函数
- 字符串引用(函数)的差异
- 在类中引用函数时的"No Matching Function for Call"
- 无法通过引用函数"calcValues"中"firstNum"和"secondNum"变量来更改值
- 尝试引用已删除的函数(不引用函数)
- 引用函数指针
- 引用函数按值和自动返回
- 为什么我们可以取消引用函数指针
- 通过引用函数传递值的目的是什么