当前位置: 首页 > news >正文

C++11新特性_自动类型推导_decltype

   decltype 是 C++11 引入的一个关键字,用于在编译时推导表达式的类型。它提供了一种方式,让编译器根据表达式的类型来确定变量的类型,而不需要显式地指定类型。下面为你详细介绍 decltype 的使用方法和应用场景。


基本语法

decltype 的基本语法如下:

decltype(expression) var;

这里的 expression 是一个表达式,decltype 会根据这个表达式的类型来推导 var 的类型。 

使用场景及示例 

1. 推导变量类型
#include <iostream>int main() {int x = 10;decltype(x) y = 20; // y 的类型被推导为 intstd::cout << typeid(y).name() << std::endl;return 0;
}

在这个例子中,decltype(x) 推导 x 的类型为 int,所以 y 的类型也被定义为 int

2. 推导函数返回值类型
#include <iostream>int add(int a, int b) {return a + b;
}int main() {decltype(add(1, 2)) result = add(3, 4); // result 的类型被推导为 intstd::cout << "Result: " << result << std::endl;return 0;
}

这里 decltype(add(1, 2)) 根据 add 函数的返回值类型推导出 result 的类型为 int

3. 用于模板编程
#include <iostream>template <typename T, typename U>
auto add(T a, U b) -> decltype(a + b) {return a + b;
}int main() {auto result = add(1, 2.5);std::cout << "Result: " << result << std::endl;return 0;
}

在这个模板函数 add 中,使用了尾随返回类型,decltype(a + b) 会根据 a 和 b 的类型推导出相加结果的类型,从而确定函数的返回类型。

4. 推导引用类型
#include <iostream>int main() {int x = 10;int& ref_x = x;decltype(ref_x) ref_y = x; // ref_y 的类型为 int&ref_y = 20;std::cout << "x: " << x << std::endl;return 0;
}

decltype(ref_x) 推导 ref_x 的类型为 int&,所以 ref_y 也是一个引用,修改 ref_y 会影响到 x

相关文章:

  • 第3篇:请求参数处理与数据校验
  • Narendra自适应控制器设计
  • 掉馅饼,八分之一到二分之一:《分析模式》漫谈59
  • Linux架构篇、第1章_02源码编译安装Apache HTTP Server 最新稳定版本是 2.4.62
  • 笔试专题(十三)
  • 59常用控件_QComboBox的使用
  • 渗透测试中的那些“水洞”:分析与防御
  • 【2025五一数学建模竞赛A题】 支路车流量推测问题|建模过程+完整代码论文全解全析
  • 2025五一数学建模C题完整分析论文(共36页)(含模型、可运行代码、数据)
  • 段永平浙大访谈精华:长期主义的知行合一
  • socket-IO复用技术
  • 治理和管理的区别
  • 程序代码篇---ESP32云开发
  • 《算法精解:C语言描述》note-1 数据结构和算法简介
  • 存算一体架构下的新型AI加速范式:从Samsung HBM-PIM看近内存计算趋势
  • 统计模式识别理论与方法
  • 透视Linux内核:深度剖析Socket机制的本质
  • 使用MGeo模型高精度实现文本中地址识别
  • C++11新特性_自动类型推导
  • GPU虚拟化实现(七)
  • 魔都眼|咖啡节上小孩儿忍不住尝了咖啡香,母亲乐了
  • 礼来一季度净利增近三成,明星GLP-1药物替尔泊肽贡献近半收入
  • 今年五一假期出游人群规模预计比去年提升8%,哪里最热门?
  • 五一去哪儿| 追着花期去旅行,“赏花经济”绽放文旅新活力
  • 结婚这件事,年轻人到底怎么想的?
  • 原国家有色金属工业局副局长黄春萼逝世,享年86岁