C++ 类型推断 (auto 和 decltype)17 Mar 2025 | 4 分钟阅读 在 C 或 C++ 等编程语言中,我们声明任何变量并在编译时显式声明变量的数据类型。但是类型推断意味着我们使用一些关键字,通过这些关键字我们不需要显式声明变量或函数的数据类型。这为程序员节省了大量时间来编写变量的数据类型。它会稍微增加程序的编译时间,但这不会影响程序的运行时间。 在这里,我们将声明用于 C++ 中类型推断的以下关键字 1. autoauto 关键字用于任何变量或任何函数之前,它会自动从其初始值获取变量或函数的数据类型。它基本上获取值初始值的表达式或函数返回值的表达式,然后确定变量的数据类型。 要声明任何 auto 变量,我们必须在声明时对其进行初始化。否则,它会给出编译时错误。 C++ 示例 1输出 ![]() 说明 在上面的示例中,我们使用 auto 关键字声明了三个变量 a、b 和 c。变量 a 的类型是整数,b 的类型是字符,c 的类型是双精度浮点数。 我们使用 typeid 运算符,它通过其 name() 函数返回变量的数据类型。 在输出中,我们得到 i 代表变量 a 的整数,c 代表变量 b 的字符,d 代表变量 c 的双精度浮点数。 C++ 示例 2输出 ![]() 说明 在上面的代码中,我们声明了三个 auto 变量,但没有在声明时初始化它们,因此它给出了编译时错误。 2. decltype()decltype() 的工作原理与 auto 相同,但它是一个运算符,它将表达式作为参数。它评估表达式,然后设置变量或实体的数据类型。 C++ 示例 1输出 ![]() 说明 在上面的代码中,我们有两个函数,一个函数返回字符类型,另一个函数返回整数类型。我们使用了 decltype() 关键字并将这两个函数作为参数传递,无论它返回什么都将是数据类型,因此我们为这些数据类型声明了新变量。 现在 fxn1 的返回类型和 var1 的数据类型将相同,fxn2 的返回类型和 var2 的数据类型也相同。因此,我们使用 typeid 运算符来获取这两个变量的数据类型。 C++ 示例 2输出 ![]() 说明 在上面的代码中,我们有两个变量:var1 具有整数数据类型,而 var2 具有字符数据类型。我们声明了另外两个变量 var3 和 var4,其中 var3 具有与 var1 相同的数据类型,因为我们使用 decltype 关键字初始化其数据类型,而 var4 具有与 var2 相同的数据类型,因为使用了 decltype 关键字。现在我们借助 typeid 关键字打印了数据类型。 注意:decltype 关键字在编译时给出变量或实体的数据类型,而 typeid 在运行时给出数据类型。如果我们使用继承并获取类的数据类型,那么 decltype 将返回指向基类的指针,而 typeid 将返回指向派生或子类的指针。 下一主题C++ 中的属性 |
C++ 允许开发人员开发强大的应用程序,它被誉为市场上最强大、最灵活的编程语言之一。在众多 C++ 函数中,`wmemmove()` 是一种处理相似数组中宽度的块移动的有用技术。这是一个深入的教程……
阅读 6 分钟
在本文中,我们将讨论如何在 C++ 中读取以空格分隔的输入。如果我们想在 C++ 中读取以空格分隔的输入,我们将使用 cin 对象以及提取运算符“>>”。程序 1:让我们通过一个示例来说明如何读取以空格分隔的...
阅读 4 分钟
盒子堆叠问题也被称为动态规划挑战。它要求用户确定可以堆叠在另一个之上的最高盒子堆。一个盒子只能堆在另一个盒子上面,前提是它的底部...
阅读 8 分钟
unordered_multimap rehash(N) 函数在 C++ 中将容器中的元素数量增加到 n 或更多。如果 n 大于容器中的元素数量,则需要重新哈希。新元素计数可能等于或大于...
阅读 3 分钟
C++ 中的阶乘程序:n 的阶乘是所有正的递减整数的乘积。n 的阶乘用 n! 表示。例如:4! = 4*3*2*1 = 24 6! = 6*5*4*3*2*1 = 720 在这里,4! 读作“4 阶乘”,也称为“4...
阅读 2 分钟
在本文中,我们将讨论其方法和实现。一种流行的用于对各种竞技游戏中的玩家进行排名的评分方法是 Elo 评分方法。ELO 评分高于另一位玩家的玩家更有可能获胜...
阅读 4 分钟
在本文中,您将了解仿函数与函数之间的区别。但在讨论它们的区别之前,您必须了解 C++ 中的仿函数和函数。C++ 中的仿函数是什么?仿函数有时被称为“函数对象”。它是一个对象……
阅读 6 分钟
在本文中,您将学习 C++ 中费马小定理的实现。但在实现之前,您必须了解费马小定理。什么是费马小定理?以法国数学家皮埃尔·德·费马命名的费马小定理……
阅读 4 分钟
Edmonds-Karp 算法是查找流网络中最大流的一种强大而有效的方法。流网络是一个有向图,其中每条边都有一个容量,表示其可承载的最大流量。该算法建立在 Ford-Fulkerson 方法的基础上,但...
11 分钟阅读
C++ 的不同编译器 本文解释了许多与编译器相关的方面。在这里,我们描述了 C++ 语言与编译器之间的交互。为什么需要编译器?这里有一些解决方案;正如大家所知,计算机可以读取用由...组成的机器语言编写的指令...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India