21xrx.com
2024-12-22 23:28:25 Sunday
登录
文章检索 我的文章 写文章
C++中的静态变量
2023-06-22 06:15:02 深夜i     --     --
C++ 静态变量 作用域 存储方式 初始化

C++中的静态变量在程序设计中非常常见,也是很有用的一种变量类型。静态变量是指在程序运行时保持不变的变量,它们的值只有在程序启动时被初始化一次,然后在后续的程序执行中不会再次改变。

在C++中,静态变量可以用两种方式定义,一种是在函数内部定义,另一种是在类中定义。

对于函数内部的静态变量,我们通常可以用它来统计函数调用次数,其中静态变量的值会被保留在函数不退出的情况下。例如:


int getCount() {

  static int count = 0;

  count ++;

  return count;

}

对于这个函数,每次调用它都会返回一个唯一的整数,这个整数是在程序执行期间累加的调用次数。静态变量count只会在程序启动时被初始化一次,然后在函数执行期间保留它的值,每次调用都会累加它的值,直到程序退出才会被销毁。

当然,静态变量还可以定义在类中,且有两种不同的用法。一种是将静态变量定义为类的成员,它可以在类的所有实例间共享,并且可以用类名访问它。例如:


class Dog

public:

  static int m_count;

;

int Dog::m_count = 0;

int main() {

  Dog::m_count ++;

  Dog::m_count ++;

  cout << Dog::m_count << endl;

  return 0;

}

上面的代码定义了一个Dog类,它包含了一个静态成员变量m_count。我们可以用Dog::m_count来访问这个静态变量,并且可以在程序的任意位置修改它的值。这里我们就用静态变量来统计Dog类的实例数量,每次添加实例时,我们就在构造函数中给静态变量m_count加1。

另一种用法是将静态变量定义为类的成员函数的局部变量,在每次调用成员函数时,都会使用相同的静态变量,而且在类的外部不能访问这个静态变量。例如:


class Cat {

public:

  void cry() {

    static int count = 0;

    cout << "Cat cried " << ++ count << " times" << endl;

  }

};

int main() {

  Cat c1, c2;

  c1.cry();

  c2.cry();

  c1.cry();

  return 0;

}

在这个例子中,我们定义了一个Cat类,它有一个cry成员函数,每次调用这个函数时,都会输出这个猫已经哭了多少次,这个值就是使用静态变量count实现的。每次调用cry函数时,都会使用相同的静态变量count,而它的值每次加1,并且在下一次函数调用时保留。

综上所述,静态变量是C++中非常有用的一种变量类型,它可以用来统计函数的调用次数、记录类的实例数量等等。我们需要根据实际情况选择不同的使用方式,来完成我们所需的功能。

  
  

评论区

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