C++ 静态变量2025年6月14日 | 阅读 7 分钟 在 C++ 中,静态变量 是一种生命周期贯穿整个程序执行的变量,但其作用域可以根据其定义位置进行限制。我们最近讨论了 static 关键字如何改变变量的行为,它确保了变量的值在定义它的块或函数执行完毕后仍然存在。 当我们需要保存一个公共属性或跟踪多个对象之间的共享数据时,静态变量非常有用。它们有助于减少冗余,并在所有实例之间实现更大的一致性。 C 静态变量示例让我们通过一个例子来说明 C 中的静态变量。 示例编译并运行输出 Account Holder Name: Joseph, Balance: $50000 Account Holder Name: John, Balance: $40000 Account Holder Name: Mary, Balance: $20000 Total Bank Accounts Created: 3 说明 在这个例子中,我们定义了一个 tpointTech 类来表示一个银行账户,以及一个名为 total_accounts 的静态变量,它用于跟踪创建的账户总数。当创建一个 tpointTech 对象时,构造函数会设置账户信息并增加 total_accounts,这个变量被所有实例共享。在创建了三个账户并展示了它们的信息后,程序使用静态变量来计算创建的账户总数。 C++ 中静态变量的类型有几种静态变量,也可以分为三个基本类别:
函数内部的静态变量在 C++ 中,当一个变量在函数内部被声明为 static 时,它的值在 successive 调用函数时会被保留。通常,局部变量在函数开始时创建,在函数结束时销毁。然而,一个静态局部变量仅在第一次调用函数时初始化,并且其生命周期直到程序结束。每次 successive 调用函数时,都会看到该静态变量的最新修改值。 C++ 函数内部静态变量示例 让我们通过一个例子来说明 C++ 函数内部的静态变量。 示例编译并运行输出 Count is: 1 Count is: 2 Count is: 3 说明 在这个程序中,我们有一个 display() 函数,其中包含一个静态变量 c,它只初始化一次并保留其值,跨函数调用。每次调用 display() 函数时,c 都会增加一并打印。因此,运行 display() 函数三次将依次产生输出 1、2 和 3。 类中的静态成员变量当一个变量在类中被指定为 static 时,它属于类而不是特定的对象。这意味着类的所有实例都使用相同的静态变量。静态成员在类外部初始化,并且独立于其任何对象而存在。 C++ 类中的静态成员变量示例 让我们通过一个例子来说明 C++ 类中的静态成员变量。 示例编译并运行输出 Total objects created are: 3 说明 在这个例子中,我们有一个 tpointTech 类,其中包含一个静态成员 object_count 函数,用于跟踪已创建的类的对象数量。之后,每次调用构造函数时都会更新 object_count 函数。在 main() 函数中创建了三个对象(a、b 和 c)。 全局静态变量在 C++ 中,当一个全局变量在程序中用 static 关键字声明时,它的作用域仅限于源文件。这意味着该变量不能从其他文件中访问。它也有助于封装,并有助于隐藏实现细节,防止在具有多个源文件的大型程序中出现命名冲突。 C++ 全局静态变量示例 让我们通过一个实例来演示 C++ 中的全局静态变量。 示例编译并运行输出 Connecting to database... Connection count: 1 Connecting to database... Connection count: 2 Database connection closed. Remaining connections: 1 说明 在此示例中,我们使用全局静态变量 db_connection_count 来模拟一个简单的数据库连接跟踪器。之后,每次调用 ConnectToDatabase() 函数都会增加计数,而 CloseDatabaseConnection() 函数会减少计数,确保只关闭活动的连接。最后,输出将依次显示连接和断开连接的过程。 C++ 中静态变量的存储 在 C++ 中,静态变量用于在程序生命周期中只分配一次内存,并且它在函数调用之间保留其值。与存储在栈上的局部变量不同,静态变量主要存储在称为数据段的特殊内存区域。 如果静态变量在程序中被显式初始化,则其值存储在已初始化数据段中。如果它在程序中没有被显式初始化,它将被自动设置为 0 并放入 BSS(Block Started by Symbol)段,该段包含未初始化的静态或全局变量。这意味着静态变量使用的内存将保留整个程序,无论它们被定义的函数或作用域是否已结束。 C++ 中静态变量的应用C++ 中静态变量的几个应用如下:
C++ 静态变量选择题1) 在 C++ 中,定义在函数内的静态变量的生命周期是多久?
答案:c) 直到程序结束。 2) 下列哪个选项正确地在 C++ 类中声明了一个静态变量?
答案:a) int static count; 3) 下列哪个选项显示了 C++ 中全局静态变量的作用域?
答案:c) 声明它的文件 4) 在 C++ 中,当一个静态变量在函数内部初始化时?
答案:b) 仅初始化一次,在第一次函数调用时 5) 在 C++ 中,如果一个静态变量在未初始化之前被访问会发生什么?
答案:d) 它默认初始化为零 下一个主题C++ 模板特化 |
匿名对象,或称未命名对象或临时对象,是 C++ 编程中的基本概念。它们指的是未分配给命名变量的类实例。相反,它们直接用于表达式或函数调用,用于临时目的。 ...
阅读 8 分钟
在本文中,您将学习 C++ 中的 feclearexcept 函数及其语法、参数和示例。feclearexcept() 方法是什么?您可以使用 C++ 函数 feclearexcept 来清除在浮点条件表达式中设置的浮点异常标志。这些标志代表了各种不规则情况,可能 ...
阅读 4 分钟
在本教程中,我们将学习如何确定两个浮点数的余数。示例:输入:a = 9.7, b = 2.3 输出:0.5 输入:a = 36.5, b = 5.0 输出:1.5 C 程序:#include <stdio.h> #include <math.h> int main() { int x = 10; int...
阅读1分钟
C++ 是最广泛使用和最高效的面向对象编程语言之一,它是完成低级任务的完美入门语言。C++ 应用程序存在于各种领域,包括嵌入式编程、Web 服务器、游戏,甚至是增强型交易应用程序....
阅读 8 分钟
简介:C++ 是一种强大的编程语言,为开发人员提供了许多创建高效健壮应用程序的功能。C++ 的重要功能之一是其标准模板库 (STL),它提供了许多数据结构和算法,使编程更轻松、更高效。顺序容器...
阅读 4 分钟
在本文中,我们将通过其历史和示例讨论 C++ 中的巴比伦平方根算法。引言:巴比伦平方根算法,也称为 Heron 方法,是一种逼近给定数字平方根的迭代方法。它基于 ...
阅读 12 分钟
数组是 C++ 中的重要数据结构,因为它们允许在单个变量中存储和操作多个值。它们用于存储一组元素,这些元素都具有相同的数据类型,并且存储在连续的内存中...
阅读 4 分钟
在处理 C 和 C++ 程序时,有效的处理数据类型至关重要。将字符串转换为双精度浮点值是一个经常遇到的场景,可以使用 strtod() 函数进行处理。尽管此函数看似简单,但它具有一些复杂性和需要考虑的因素……
阅读 3 分钟
关联容器是无序的多重映射。它存储键值对,类似于无序映射。另一方面,多重映射允许重复值,而无序映射不允许。这些是无序容器,因此在过程中没有顺序...
阅读 4 分钟
在本文中,我们将讨论 C++ 中的 std::is_rvalue_reference 模板,包括其语法、参数、示例和优点。什么是 std::is_rvalue_reference 模板?C++ 模板 std::is_rvalue_reference 用于确定一个类型是否是右值引用类型。它返回一个布尔值。语法:它的语法如下:template <class T...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India