C++ 非Const引用

//报错信息
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>());
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、 C/C++程序基础 面试例题1——分析代码写输出(一般赋值语句的概念和方法)。 面试例题2—...
    LuckTime阅读 2,041评论 2 42
  • 写在前面: 犹豫了一下,不知道该不该发这么多。毕竟题目虽全,但是其实很多人看了不到一半,估计就会默默的收藏保存,等...
    Yt_cc阅读 14,749评论 1 6
  • 数据格式详解 输入输出函数详解 字符串处理函数详解 内存函数详解 类详解 数据格式详解 2^8=256(同样是一个...
    我在东北玩泥巴_阅读 2,015评论 0 0
  • 原文地址: 不详 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面...
    Caiaolun阅读 311评论 0 0
  • 推荐指数: 6.0 书籍主旨关键词:特权、焦点、注意力、语言联想、情景联想 观点: 1.统计学现在叫数据分析,社会...
    Jenaral阅读 5,754评论 0 5