大佬教程收集整理的这篇文章主要介绍了c – 从类型的右值开始无效初始化’std :: vector&’类型的非const引用,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
int main(){ vector<double> a1; a1.push_BACk(3); a1.push_BACk(7); a1.push_BACk(2); vector<double>& a2 = a1; //COMMENT 1: This line has no error vector<double>& a4 = print(a2); //COMMENT 2: Why this line has error? R value is an object then it should be referenced by a4? return 0; } vector<double> print(vector<double>& a3){ cout<<"In print function the size of vector is :"; cout<<a3.size()<<endl; return a3; }
您可以通过多种方式解决此问题:
I.持有const引用,如
const vector<double> &retVal = print();
const引用将绑定临时的生存期延长到引用的生命周期.
II.只需按值返回:
vector<double> retVal = print();
III.返回对您知道将具有足够生命周期的对象的引用,例如: G.班级成员:
class Foo { vector<double> vec; public: vector<double> &print() { return vec; } }; Foo f; vector<double> &retVal = f.print();
但是,请不要从函数中返回对临时的引用,如下所示:
// this is wrong: vector<double> &print() { vector<double> v; return v; }
因为它调用未定义的行为. (请注意,这与您的示例不同,因为您返回的函数的参数当然是活的,但值得注意这种情况,因为这是一个常见的错误.)
以上是大佬教程为你收集整理的c – 从类型的右值开始无效初始化’std :: vector&’类型的非const引用全部内容,希望文章能够帮你解决c – 从类型的右值开始无效初始化’std :: vector&’类型的非const引用所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。