C++中static修饰符的详解及其作用介绍

yizhihongxing

C++中static修饰符的详解及其作用介绍

什么是static修饰符

在C++中,static是一个关键字,它可以用来修饰变量、函数、类和成员变量等。使用static修饰符可以改变变量、函数、类和成员变量的作用范围和生命周期。

static修饰符的作用

静态变量

使用static修饰变量可以使该变量具有静态存储方式,即在程序的整个生命周期中,该变量只会被分配一次内存空间,所有的实例都共享同一块内存,从而实现不同实例之间共享变量值的效果。

示例代码:

#include <iostream>
using namespace std;

void increment(){
  static int x = 0;
  x++;
  cout << x << endl;
}

int main(){
  increment(); //输出 1
  increment(); //输出 2
  increment(); //输出 3
  return 0;
}

上面的代码定义了一个increment函数,其中x变量使用static修饰。当函数第一次被调用执行时,x被初始化为0,然后在函数的执行过程中,每次调用时,x的值都会自增1,并输出x的值。由于x是静态变量,因此每次调用increment函数时,x的值都是在上一次的基础上自增1的。这就实现了从函数调用第一次开始,一直对x值进行累加的效果。

静态函数

使用static修饰函数可以将函数的作用域从整个文件扩大到整个程序,即使多个文件都包含了这个函数,这个函数也只会在编译时被分配一次内存空间,避免了函数名冲突,同时也很好地隐藏了函数实现的细节。

示例代码:

#include <iostream>
using namespace std;

class Test{
  public:
    static void print(){
      cout << "Hello World!" << endl;
    }
};

int main(){
  Test::print(); //输出 "Hello World!"
  return 0;
}

上面的代码定义了一个Test类,其中print函数使用static修饰。因此,print函数的作用域从整个类实例缩小到整个程序。即使在其他文件中也会保持作用。

静态成员变量

使用static修饰成员变量可以使该成员变量具有静态存储方式,这意味着该成员变量只会被分配一次内存空间,并在类的所有实例中共享,即所有对象共用同一块内存空间。

示例代码:

#include <iostream>
using namespace std;

class Test{
  public:
    static int num;
};

int Test::num = 0;

int main(){
  Test t1;
  Test t2;
  t1.num = 1;
  cout << t1.num << endl; //输出 1
  cout << t2.num << endl; //输出 1
  return 0;
}

上面的代码定义了一个Test类和一个静态成员变量num。由于num是静态成员变量,因此在类的所有实例中共享,即t1和t2对象共用同一块内存空间,所以当t1中的num变量的值改变时,t2中的num变量的值也会被改变。

总结

静态修饰符static可以改变变量、函数、类和成员变量的作用范围和生命周期。静态变量可以实现不同实例之间共享变量值,静态函数可以方便地隐藏函数实现的细节,而静态成员变量则可以在类的所有实例中共享。要注意静态成员变量的初始化,可以在类外初始化,也可以在类内初始化静态成员变量。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中static修饰符的详解及其作用介绍 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • Excel怎么批量重命名文件名?Excel批量重命名文件教程

    下面是详细讲解 Excel 批量重命名文件名的攻略: 一、准备工作 在进行 Excel 批量重命名操作之前,我们需要进行以下准备工作: 将需要重命名的文件放置在同一文件夹内; 打开 Excel,新建一个工作表。 二、获取文件名列表 首先,我们需要获取需要重命名的文件名列表。这个过程是通过 Excel 的“文本导入向导”来实现的,具体步骤如下: 在 Excel…

    other 2023年6月26日
    00
  • ios11正式版多大 更新升级iOS10正式版需要占用多大内存(附iOS11升级教程)

    iOS 11正式版更新升级攻略 1. iOS 11正式版的大小 iOS 11正式版的大小取决于设备型号和之前安装的iOS版本。以下是一些常见设备的iOS 11正式版大小范例: iPhone 7 Plus:大约1.9GB iPad Pro 9.7英寸:大约2.0GB 请注意,这些数字仅供参考,实际大小可能会有所不同。 2. 升级iOS 10正式版所需的内存空间…

    other 2023年8月1日
    00
  • 做好用户生命周期分析与管理的方法

    做好用户生命周期分析与管理对于网站的运营非常重要,可以帮助网站更好地了解用户,提升用户粘性,提升转化率。下面是一些方法和步骤,来帮助我们更好地进行用户生命周期分析与管理。 方法和步骤 步骤1:收集数据 首先,我们需要收集用户相关的数据,包括网站流量、用户行为特征、用户活跃度等等。我们可以通过网站的统计工具(例如Google Analytics等)或第三方数据…

    other 2023年6月27日
    00
  • win10右键关机怎么设置?Win10右键添加关机功能图文教程

    下面是详细的攻略: Win10右键关机怎么设置? 步骤一:打开注册表编辑器 在Windows 10上添加关机选项的第一步是打开注册表编辑器。要做到这一点,可以按Win + R键,在运行对话框中输入regedit,然后按下Enter键。 步骤二:找到Windows注册表 在注册表编辑器中,你需要找到下面这个键: HKEY_CLASSES_ROOT\Direct…

    other 2023年6月27日
    00
  • 如何在vue中使用百度地图添加自定义覆盖物(水波纹)

    下面我来详细讲解如何在Vue中使用百度地图添加自定义覆盖物(水波纹)的完整攻略。 1. 准备工作 在开始添加自定义覆盖物之前,需要先引入百度地图控件的依赖和JS API文件。具体步骤如下: 在index.html页面中引入Baidu Map API文件和相关CSS样式: <!– 加载Baidu Map API文件 –> <script …

    other 2023年6月26日
    00
  • Win11移动硬盘不显示怎么办?移动硬盘在电脑上显示不出来解决方法

    当移动硬盘在Win11电脑上插入后无法显示时,可以使用以下操作进行解决。 1. 检查移动硬盘连接 首先需要检查移动硬盘是否正确连接到电脑上。如果连接不良,可能导致电脑无法识别移动硬盘。 检查USB接口是否损坏或者松动,重插移动硬盘; 尝试使用其他USB接口连接移动硬盘; 检查移动硬盘是否供电正常。 2. 打开磁盘管理 如果移动硬盘仍然无法显示,可以尝试在Wi…

    other 2023年6月27日
    00
  • 这样回答继承可能面试官更满意

    接下来我会详细讲解“这样回答继承可能面试官更满意”的完整攻略。 标题 首先,在回答继承时,必须先明确继承的概念和作用。可以使用以下标题: 什么是继承? 继承的作用是什么? 正文 其次,在回答继承时,应该结合实际问题和自身经验进行回答。可以采取以下方法: 1. 解释继承的原理和机制 继承是一种面向对象编程的重要特性,它可以让子类从父类中继承属性和方法。这种继承…

    other 2023年6月26日
    00
  • 使用Python对MySQL数据操作

    使用Python对MySQL数据操作的完整攻略 1. 安装MySQL驱动程序 在开始之前,我们需要安装Python的MySQL驱动程序。可以使用pip命令来安装,运行以下命令: pip install mysql-connector-python 2. 连接到MySQL数据库 在Python中,我们可以使用mysql.connector模块来连接到MySQL…

    other 2023年8月3日
    00
合作推广
合作推广
分享本页
返回顶部