应该将不修改相应实参的形参定义为const引用,否则将会带来如下问题:

1.不能通过字符串字面值来调用该函数

2.若定义函数如下

1 int A(string &a){}
2 int B(const string &b)
3 {
4   A(b);//编译错误
5 }

则会引起编译错误。

3.引用传递右值也是不允许的

 1 int A(int &a){}
 2 int main()
 3 {
 4   short v1=0;
 5   const int v2=42;
 6   int v3=A(v1);//错误,v1不是int
 7   v3=A(v2);//错误,v2是const
 8   v3=A(0);//错误,非左值
 9   v3=A(v1+v2);//错误,非左值
10   int v4=A(v3);//正确
11 }      

转载于:https://www.cnblogs.com/binger1990/archive/2012/12/19/2824574.html

const形参与非const形参相关推荐

  1. C++类中const函数与非const函数的调用规则

    class EX{public:void constFunction() const; }; 如上所示,通过将类成员函数声明为const,以表示这个函数不可以修改类中的成员变量. 建议将不可以修改数据 ...

  2. 类中const函数及非const函数的调用规则

    转自:点击打开链接 类中const函数及非const函数的调用规则 class Student { public:int getAge(){return m_age;}int getAge() con ...

  3. C++ const对象与非const对象的相互调用、const成员函数与非const成员函数的相互调用

    1)const对象可以调用非const成员函数吗? 答:不能.const修饰的对象实则修饰的是该对象的this指针,并且const修饰的成员不能进行修改,如果使用const调用非const成员函数,可 ...

  4. const引用和非const引用

    const引用可以初始化为不同类型的对象或者初始化为右值,同样的初始化对于非const引用却是不合法的. 非const引用只能绑定以与该引用同类型的对象中. const引用则可以绑定到不同但相关的类型 ...

  5. C++中const引用和非const引用的使用注意

    今天学习时突然有疑惑,C++有了指针为何还要设计引用呢?后来看到一篇博客豁然开朗:为什么 C++ 有指针了还要引用? 总结一下: 代码更加简洁好看了 由于引用必须被初始化,并且之后也无法重新绑定其他对 ...

  6. const对象不能调用非const成员函数

    在C++中,可以用const来定义一个const对象,但const对象不可以调用类中的非const成员函数 原因 引发原因:: 由调用成员函数时隐式传入的当前对象的this指针引起. 非const成员 ...

  7. const对象只能调用const成员函数、不能调用非const成员函数;非const对象可以调用const成员函数

    引发原因: 由调用成员函数时隐式传入的当前对象的this指针引起. 1. 非const成员函数中的隐式参数:classA* this 2. const成员函数中的隐式参数:const classA* ...

  8. C++Primer:函数(参数传递-非引用形参)

    1.参数传递 每次调用函数时,都会重新创建该函数所有的形参,此时所传递的实参将会初始化对应的形参. 形参的初始化与变量的初始化一样:如果形参具有非引用类型,则复制实参的值,如果形参为引用类型,则他只是 ...

  9. C++非const引用问题:error: cannot bind non-const lvalue reference of type

    出现这个问题是因为把一个临时变量传入了函数的引用形参中,简化代码如下: void back(int &i){return; }int main(){back(1); } 应该改为: void ...

最新文章

  1. lucene源码分析的一些资料
  2. 设计模式学习之Factory Method模式和Abstract Factory模式
  3. Caffe cuDNN
  4. 爱奇艺如何开启两指双击触发奇观功能
  5. memcache两种客户端比较
  6. javascript加密七种方法
  7. 【kafka】关于Kafka Fetch Session的讨论
  8. 【总结】C++逻辑与或
  9. C#中Abstract和Virtual
  10. Python3分别将list、numpy数组、变量内容写入txt文件中
  11. 决策树,随机森林,集成学习的算法实现
  12. 捷联惯导系统学习7.2(捷联惯导精对准 )
  13. PMP第五章:项目范围管理
  14. Uber天使投资人杰森卡拉卡尼斯投资…
  15. ubuntu 常识(转)
  16. sql删除数据的3种方法
  17. EasyTV 手机电视
  18. csp序列查询(C语言)
  19. 高通平台开发系列讲解(网络篇)SFE软加速简介
  20. 笔记:腾讯云服务器的使用

热门文章

  1. matplotlib绘图蓝本
  2. 2022年全球及中国圆机织针行业产能规模与运营前景战略分析报告
  3. 为什么应该放弃或减少使用MD5
  4. vue 导出 excel表格
  5. LInux主机与虚拟机网络链接
  6. 【python】-socketServer
  7. django Forbidden
  8. Servlet学习笔记(七)—— 自己定义过滤器的编写改进:自己定义实现FilterChain...
  9. [SDOI2015]星际战争
  10. 初识 HTML5(一)