详解c++中的 static 关键字及作用

详解C++中的static关键字及作用

在C++中,static关键字有多种用途和作用。下面将详细介绍这些用途,并提供两个示例说明。

1. 静态变量

在函数内部使用static关键字声明的变量称为静态变量。静态变量与普通变量的区别在于,静态变量的生命周期延长到整个程序的执行期间,而不是仅在函数调用时存在。

示例1:计算函数调用次数

#include <iostream>

void countCalls() {
    static int count = 0;  // 静态变量
    count++;
    std::cout << \"函数调用次数: \" << count << std::endl;
}

int main() {
    countCalls();  // 输出:函数调用次数: 1
    countCalls();  // 输出:函数调用次数: 2
    countCalls();  // 输出:函数调用次数: 3
    return 0;
}

在上面的示例中,静态变量count在每次函数调用时都会保留其值,因此可以用于计算函数被调用的次数。

2. 静态函数

在类中使用static关键字声明的函数称为静态函数。静态函数不依赖于类的实例,可以直接通过类名调用,而不需要创建对象。

示例2:计算两个数的和

#include <iostream>

class MathUtils {
public:
    static int add(int a, int b) {
        return a + b;
    }
};

int main() {
    int result = MathUtils::add(5, 3);
    std::cout << \"结果: \" << result << std::endl;  // 输出:结果: 8
    return 0;
}

在上面的示例中,静态函数add可以直接通过类名MathUtils调用,而不需要创建类的实例。这使得静态函数可以在不创建对象的情况下执行某些操作。

3. 静态类成员变量

在类中使用static关键字声明的成员变量称为静态类成员变量。静态类成员变量在所有类的实例之间共享,只有一个副本存在。

示例3:统计类的实例数量

#include <iostream>

class MyClass {
public:
    static int count;  // 静态类成员变量

    MyClass() {
        count++;
    }

    ~MyClass() {
        count--;
    }
};

int MyClass::count = 0;  // 初始化静态类成员变量

int main() {
    MyClass obj1;
    MyClass obj2;
    MyClass obj3;

    std::cout << \"实例数量: \" << MyClass::count << std::endl;  // 输出:实例数量: 3

    return 0;
}

在上面的示例中,静态类成员变量count用于统计MyClass类的实例数量。每次创建对象时,count会自增,每次销毁对象时,count会自减。通过类名MyClass可以直接访问静态类成员变量。

以上是C++中static关键字的几种常见用途和作用。希望这个攻略对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解c++中的 static 关键字及作用 - Python技术站

(0)
上一篇 2023年8月20日
下一篇 2023年8月20日

相关文章

  • ZooKeeper入门教程一简介与核心概念

    ZooKeeper入门教程一:简介与核心概念 简介 ZooKeeper是一个分布式的解决方案,它可以用来管理和协调分布式应用程序。ZooKeeper可以用于实现诸如分布式锁、服务发现和集群管理等功能。ZooKeeper的设计目标是提供一个高性能、高可靠性、具备严格顺序性、支持分布式部署的专用协调服务。 核心概念 ZNode ZNode是ZooKeeper的数…

    other 2023年6月27日
    00
  • 微信小程序从入坑到放弃之坑十二:navigator无法跳转的坑

    微信小程序从入坑到放弃之坑十二:navigator无法跳转的坑 微信小程序开发相比其他移动端开发,有其独特的优势,但同时也存在着一些常见的坑。其中之一就是navigator无法跳转的问题。 问题描述 我们在开发小程序时,通常使用navigator组件进行页面之间的跳转。但有时候会出现点击navigator无反应的情况,或者是点击了navigator,虽然导航…

    其他 2023年3月29日
    00
  • 详解Linux下调试器GDB的基本使用方法

    详解Linux下调试器GDB的基本使用方法 介绍 GDB是GNU开源组织发布的一个强大的、灵活的、可扩展的、免费的调试器,可以用于多种编程语言,例如C、C++、Fortran等。使用GDB可以检查程序运行的状态,跟踪代码执行流程,查找错误等。本攻略将详细介绍在Linux下如何使用GDB进行程序调试。 安装 在Linux中安装GDB非常简单,只需要在终端中输入…

    other 2023年6月20日
    00
  • SQL2008中SQL应用之- 死锁(Deadlocking)

    SQL2008中SQL应用之死锁(Deadlocking)攻略 在 SQL2008 中,死锁是指两个或多个事务相互等待,导致所有事务无法继续执行的状态。 死锁的原因 死锁通常发生在多个事务同时访问同一资源时。例如,如果两个事务同时想要更新同一个表中的同一行,其中一个事务必须等待另一个事务完成才能继续执行。如果两个事务都在等待对方完成,就会发生死锁。 防止死锁…

    other 2023年6月27日
    00
  • matlab画图常用的符号和颜色

    以下是关于Matlab画图常用的符号和颜色的完整攻略,包含两个示例。 Matlab画图常用的符号和颜色 在Matlab中,我们可以使用不同的符号和颜色来区分不同的数据集或者不同曲线。以下是一些常用的符号和颜色: 符号 符号 描述 o 圆 + 十字 * 星号 s 正方形 d 菱形 ^ 上三角 v 下三角 < 左三角 > 右三角 颜色 颜色 描述 b…

    other 2023年5月9日
    00
  • PhpStorm 如何优雅的调试Hyperf的方法步骤

    PHPStorm 是一款功能强大的 IDE,我们可以通过它快速地进行代码编辑、调试和测试。如果我们需要开发和调试 Hyperf 应用程序,这里介绍一种优雅的调试方法。 步骤: 安装 Hyperf Debug 插件 在代码编辑器 PHPStorm 中,找到 Settings -> Plugins 进入插件管理页面,搜索 Hyperf Debug 插件并安…

    other 2023年6月27日
    00
  • 如何使用rust实现简单的单链表

    使用Rust实现简单的单链表可以通过以下步骤: 创建一个节点的结构体 节点结构体需要包含两部分内容:数据和指向下一个节点的指针。可以编写如下代码: struct Node<T> { data: T, next: Option<Box<Node<T>>>, } next字段是一个Option<Box<…

    other 2023年6月27日
    00
  • Visual Studio 14 初试,vNext

    Visual Studio 14 初试,vNext 最近,微软推出了他们的全新 Visual Studio 14,它的正式名称应该是 Visual Studio 2015,但是现在还没有官方发布。此外,作为一位站长,还听说了有一个 vNext 版本的 Visual Studio,是什么呢? Visual Studio 14 最近 Visual Studio …

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部