C++ 非Const引用

2021-01-09  本文已影响0人  忻恆
//报错信息
error: cannot bind non-const lvalue reference of type 'std::vector<int>&' to an rvalue of type 'std::vector<int>'

报错原因:
当函数使用非Const类型的形式参数时,编译器会认为该函数会修改该参数,且该参数返回后还会发挥作用。
如果把一个临时变量当成非const引用类型传入,由于临时变量可能随时会消失,修改临时变量也毫无意义。
因此,临时变量不能作为非const引用。

例如++++i与i++++的区别,前者是合法的,后者是非法的。前者是i自增后再参与其他运算,后者是i参与运算后对产生的临时变量自增1。

// 参考代码
void Func1(vector<int> v){
    cout<<"Success"<<endl;
}
void Func2(vector<int> &v){
    cout<<"Success"<<endl;
}
void Func3(const vector<int> &v){
    cout<<"Success"<<endl;
}
int main(){
    vector<int> v = {1, 2, 3};
    Func1(vector<int>());
    Func2(vector<int>()); //报错行
    Func3(vector<int>());
}
上一篇 下一篇

猜你喜欢

热点阅读