C++中一般引用作形参和常引用作形参的问题

#include<iostream>
using namespace std;
int f(const int &a){return a;}
int g(int &a){return a;}
int h(int a){return a;}
int main(){
    int x=3;
    cout<<f(x)<<endl;
    cout<<f(3)<<endl;

    cout<<g(x)<<endl;

    //cout<<g(3)<<endl;//error: invalid initialization of non-const reference of type 'int&' from a temporary of type 'int'
    //error: in passing argument 1 of `int g(int&)'
    cout<<h(x)<<endl;
    cout<<h(3)<<endl;
    }

在这里插入图片描述
常数没有地址,对于常数的引用必须是个const&,

同样的,如果x是个const的话,int g(int &a){return a;}也会报错:

结论:

如果不需改变形参的值又不用作参数传递(实参赋值给形参),用常引用作形参适应面最广:实参可以是变量也可以是常量。

如果需要改变形参的值,用引用作形参最合适:实参必须是变量不允许是常量。

如果不需改变形参的值又可以用作参数传递(实参赋值给形参),用普通变量作形参:多了传递参数的开销。
对比一般引用作形参和常引用作形参

一般引用作形参:
1.不用作参数传递(实参赋值给形参),节省开销,提高效率。
2.函数可以改变形参的值
3.实参不能是常量

常引用作形参有3个作用:
1.不用作参数传递(实参赋值给形参),节省开销,提高效率。
2.函数不能改变形参的值
3.实参可以是常量

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值