C++ 非Const引用

//报错信息
error: cannot bind non-const lvalue reference of type 'std::vector&' to an rvalue of type 'std::vector'

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

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

// 参考代码
void Func1(vector v){
    cout<<"Success"< &v){
    cout<<"Success"< &v){
    cout<<"Success"< v = {1, 2, 3};
    Func1(vector());
    Func2(vector()); //报错行
    Func3(vector());
}

你可能感兴趣的:(C++ 非Const引用)