C++函数的返回值(上)

对于C++有返回值的函数来说,其返回值的类型可以是值类型,也可以是引用类型。

1 返回值为值类型的函数

使用临时对象(temporary object)来保存函数的返回值。函数的返回值用于初始化调用点的一个临时对象,该临时对象就是函数调用的结果。如

[cpp]  view plain  copy
  1. int func()  
  2. {  
  3. return 1;  
  4. }  
  5. int i = func();  
此时,有一个临时对象用来保存 func() 函数的返回值 1 ,之后将临时对象的值赋值给变量 i 。像其它任何对象一样,临时对象需要存储空间,并且能够构造和销毁。临时对象和其它对象的区别在于从来看不到它们,编译器负责决定他们的去留以及它们存在的细节。编译器使得所有的临时量自动地成为 const 所以,对于返回值为值类型的函数,其返回值为右值

[cpp]  view plain  copy
  1. char get_val(string& str, int index)  
  2. {  
  3. return str[index - 1];  
  4. }  
  5. string str = "12345";  
  6. char ch = get_val(str, 1);//ch的值是’1’  
  7. get_val(str, 1) = 'a';//编译时报错,error C2106: “=”: 左操作数必须为左值  


2 返回值为引用类型的函数

当函数的返回值是引用类型时,其返回值即为return的变量,所以不需要临时对象保存其返回值。所以,对于返回值为引用类型的函数,其返回值为左值。

[cpp]  view plain  copy
  1. char& get_val(string& str, int index)  
  2. {  
  3. return str[index - 1];  
  4. }  
  5. string str = "12345";  
  6. char ch = get_val(str, 1);//ch的值是’1’  
  7. get_val(str, 1) = 'a';//此时str的值为”a2345”  
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值