21xrx.com
2024-12-22 22:41:29 Sunday
登录
文章检索 我的文章 写文章
C++中的静态变量和函数
2023-07-04 20:39:41 深夜i     --     --
C++ 静态变量 静态函数

C++是一种非常强大的面向对象编程语言,其对于静态变量和函数的支持也非常出色,下面我们来了解一下C++中的静态变量和函数。

首先来说明一下静态变量,静态变量是在函数内部使用static关键字声明的变量,与普通变量不同,静态变量在程序的生命周期内只会被初始化一次,且默认初始化为0值。在使用静态变量时,需要注意其作用域只在定义的函数内部,其他函数无法使用该变量,但是静态变量可以跨多次函数调用,即保留了上一次函数调用时的值。

例如,下面的代码展示了如何定义和使用一个静态变量:


#include<iostream>

using namespace std;

void fun() {

  static int count = 0;

  count++;

  cout << "调用fun函数了" << count << "次" << endl;

}

int main() {

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

    fun();

  return 0;

}

运行上述代码会输出如下结果:


调用fun函数了1次

调用fun函数了2次

调用fun函数了3次

调用fun函数了4次

调用fun函数了5次

其实在这个例子中,每次调用函数时都会使得count的值加1,但是由于count是静态变量,所以每次调用结束之后,count的值并不会被销毁,下次再次调用该函数时,count的值依旧保留在内存中,所以最终输出了正确的调用次数。

接下来是静态函数,静态函数在定义时使用static关键字。不同于成员函数,静态函数属于类而不属于对象,因此可以直接使用类名引用。与静态变量不同,静态成员函数的访问权限是全局的,可以由任何对象调用,包括私有函数,只是需要使用类名引用。当类的对象被创建时,所有静态成员会被初始化。

再举一个例子,展示如何在类中定义和使用静态函数:


#include<iostream>

using namespace std;

class Box {

public:

  static int count;

  static void showCount()

    cout << "一共创建了" << count << "个Box对象" << endl;

  

  Box() { count++; }

};

int Box::count = 0;

int main() {

  Box b1, b2, b3;

  Box::showCount();

  return 0;

}

运行上述代码后会输出:


一共创建了3个Box对象

在这个例子中,我们定义了一个Box类,其中包括一个静态成员变量和一个静态成员函数。静态成员变量count用于统计Box对象创建的数量,在Box类的构造函数中每次创建对象时,count的值就会加1。静态函数showCount则用于输出Box对象一共创建了多少个。在main函数中,我们创建了三个Box对象,然后使用Box类名直接调用了showCount函数。

综上所述,静态变量和函数在C++中的应用十分广泛,对于一些常量或者工具函数的定义,使用静态变量和函数更为可取。使用静态变量和函数可以方便地进行统计、计数和状态管理,也提高了代码的可读性和可维护性。

  
  

评论区

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