21xrx.com
2024-11-05 16:38:13 Tuesday
登录
文章检索 我的文章 写文章
C++中static的作用和用法详解
2023-06-27 05:17:33 深夜i     --     --
C++ static 作用 用法 详解

C++中,static这个关键字是比较常用的,它有着多种不同的作用和用法。本文将详细解释static的含义和其在C++中的各种应用。

一、static作为局部变量的修饰符

在C++中,我们可以使用static修饰局部变量,使得它的生命周期不再是函数调用的时间,而是整个程序运行期间。这样,在函数执行完成后,变量的值将被保留下来,直至程序结束。

例如:


#include <iostream>

using namespace std;

void count() {

  static int cnt = 0;

  cnt++;

  cout << "cnt = " << cnt << endl;

}

int main() {

  for(int i = 0; i<5; ++i) count();

  return 0;

}

该程序输出:


cnt = 1

cnt = 2

cnt = 3

cnt = 4

cnt = 5

在函数count()中,我们使用static修饰了变量cnt,每次函数被调用时,cnt的值都会累加1。因为cnt是static变量,所以其生命周期跟程序的运行期间一样长,不会在函数之间被销毁。

二、static作为全局变量的修饰符

在C++中,我们也可以使用static修饰全局变量。当使用static修饰全局变量时,该变量只能在被定义的文件作用域内访问,而其他文件无法访问该变量。

例如,在文件a.cpp中定义一个静态变量:

a.cpp:


static int var;

如果在文件b.cpp中尝试访问变量var,则会出现编译错误。

三、static作为成员变量的修饰符

在C++类中,我们可以使用static修饰类的成员变量。这种情况下,该成员变量将被所有该类的对象所共享。此外,类的静态成员变量也可以在类外被初始化和做出定义,并且不需要类对象被创建。

例如:


class A

public:

  static int var;

;

int A::var = 10;

int main()

  cout << A::var << endl;

  return 0;

该程序输出:


10

在上面的例子中,我们使用static修饰了类A中的成员变量var。由于使用了static,var是该类的所有对象所共享的,并且可以在类外被定义和初始化。

四、static作为成员函数的修饰符

在C++类中,我们还可以使用static修饰类的成员函数。当使用static修饰成员函数时,该函数可以不需要对象被创建即可调用,因为其不会对对象的成员变量进行修改。

需要注意的是,由于静态成员函数与类的对象无关,它只能访问类的静态成员和静态函数。

例如:


class A {

public:

  static void f() World!" << endl;

  

};

int main() {

  A::f();

  return 0;

}

该程序输出:


Hello, World!

在上面的例子中,我们使用static修饰了类A中的成员函数f。由于使用了static,f不需要通过对象来调用,可以直接用A::f()进行调用。

综上,static在C++中有多种不同的作用和用法,无论是作为变量的修饰符,还是作为函数的修饰符,都有着特定的用途和含义。学习并掌握这些用法,有助于我们更好地使用C++语言进行开发。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复