C++14学习笔记(2)——函数返回类型推导

在上一篇学习笔记中提到了Lambda表达式可以使用auto形参和返回类型,但普通函数不能使用auto形参。

虽然普通函数不能使用auto形参,但可以使用返回类型推导。在C++11中我们可以使用后置返回类型推导来完成这件事情:

//代码2.1
//C++11中使用后置返回类型推导
auto add(int x, int y) ->decltype(x + y)
{
	return x + y;
}
而在C++14中,我们可以省略decltype,编译器直接由return语句的值推导出返回类型:

//代码2.2
//C++14中不需要后置decltype
auto add(int x, int y)
{
	return x + y;
}

如果有多条return语句,则它们的返回类型必须相同,否则编译器报错:

//代码2.3
auto PI(bool fract)
{
	if (fract) return 3.1416;
	else return 3;		//错误:推导出来的int与之前推导出来的double冲突
}

对于含有递归调用的函数,递归调用必须在第一个return之后,否则编译器在递归调用时还不知道返回类型:

//代码2.4
auto Fibonacci(int n)
{
	//错误:Fibonacci的返回类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值