C++函数声明后的“ - >”是什么?


orchid
电梯物联网专家 2024-01-17 09:36:53 50512 赞同 0 反对 0
分类: 资源 标签: 后端
C++函数声明后的“ - >”是什么?

来自C++ 11的新函数声明语法,它被称为“尾随返回类型”。在函数声明结束时,->表示以下是该函数的返回类型。只有在使用auto关键字而不是您通常期望的实际返回类型时才能使用它。

举例来说,这两个声明是兼容的:

  •  
  •  
int foo(); auto foo() -> int;

根据你的口味,你会发现它比旧的声明语法漂亮,尤其是当返回类型是非常长/复杂:

  •  
  •  
task<typename details::_TaskTypeFromParam<_Ty>::_Type> create_task(_Ty _Param); auto create_task(_Ty _Param) -> task<typename details::_TaskTypeFromParam<_Ty>::_Type>;

但是有时可能需要使用模板,当函数的返回类型可能随参数而变化时。

说你想要一个模板函数添加变量:

  •  
  •  
  •  
  •  
  •  
template<typename T> T add(const T& x, const T& y) {     return x + y; }

你只能添加相同类型的变量。假设您希望能够添加任何类型的变量(如add((int)1, (double)2))。

  •  
  •  
  •  
  •  
  •  
template<typename T, typename U> ??? add(const T& x, const U& y) {     return x + y; }

问题是你不能事先告诉x + y的结果类型将是什么。作为模板,它们甚至可以是非整数类型。(难道你不能这样做add(std::string("x"), "y")?)

Decltype,以及新的函数声明语法,让你解决这个问题。

  •  
  •  
  •  
  •  
  •  
template<typename T, typename U> auto add(const T& x, const U& y) -> decltype(x + y) {     return x + y; }

Decltype“返回”表达式的类型。由于您需要xy已宣布为decltype(x + y)才能正常工作,因此您需要新的语法。

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
电梯物联网专家L2
粉丝 1 资源 185 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  127
统信桌面专业版【全盘安装UOS系统】介绍  122
银河麒麟桌面操作系统安装佳能打印机驱动方法  114
银河麒麟桌面操作系统 V10-SP1用户密码修改  105
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益209.03元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!