当前位置:首页 C++ > 正文

c++关键字static的作用

作者:野牛程序员:2023-07-15 12:01:42 C++阅读 2666

在C++中,关键字"static"具有多种用途和作用,具体取决于它所应用的上下文。下面是一些常见用途和作用:

  1. 在类中的静态成员变量:当将关键字"static"用于类的成员变量时,它将成为类的静态成员变量,而不是对象的成员变量。静态成员变量在类的所有对象之间共享,并且只有一个副本存在于内存中。

  2. 在类中的静态成员函数:与静态成员变量类似,静态成员函数也属于类本身,而不是对象。它们可以在没有类的实例的情况下调用,也可以访问类的静态成员变量,但不能访问非静态成员变量。

  3. 在函数内的静态局部变量:当将关键字"static"用于函数内的局部变量时,该变量在函数调用之间保持持久性。这意味着变量的生命周期扩展到整个程序运行期间,而不仅仅是在函数每次调用时。

  4. 在文件中的静态全局变量和函数:当在文件的顶部(全局作用域)使用关键字"static"声明变量或函数时,它们的作用域将限制在当前文件中。这意味着它们不能被其他文件访问,因此具有文件作用域。

总体而言,"static"关键字用于指定特定变量或函数的存储类别、生命周期和作用域。它可以在类中控制成员的共享性,在函数内提供持久性,并在文件中限制变量和函数的作用域。

以下是一些关于C++中"static"关键字的常见用法的示例:

  1. 静态成员变量:

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

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

int main() {
  MyClass obj1;
  MyClass obj2;

  obj1.count = 5; // 通过对象访问静态成员变量
  obj2.count = 10;

  cout << obj1.count << endl; // 输出:10
  cout << obj2.count << endl; // 输出:10
  cout << MyClass::count << endl; // 通过类名访问静态成员变量,输出:10

  return 0;
}
  1. 静态成员函数:

class MathUtility {
public:
  static int add(int a, int b) { // 静态成员函数
    return a + b;
  }
};

int main() {
  int result = MathUtility::add(5, 3); // 调用静态成员函数
  cout << result << endl; // 输出:8

  return 0;
}
  1. 函数内的静态局部变量:

#include <iostream>

void countCalls() {
  static int counter = 0; // 静态局部变量声明和初始化
  counter++; // 增加计数器的值
  std::cout << "Function has been called " << counter << " times." << std::endl;
}

int main() {
  countCalls(); // 输出:Function has been called 1 times.
  countCalls(); // 输出:Function has been called 2 times.
  countCalls(); // 输出:Function has been called 3 times.

  return 0;
}
  1. 文件中的静态全局变量和函数:

// 文件1.cpp
#include <iostream>

static int count = 0; // 静态全局变量

void incrementCount() {
  count++;
}

// 文件2.cpp
#include <iostream>

extern int count; // 对文件1中的静态全局变量进行声明

int main() {
  incrementCount();
  std::cout << count << std::endl; // 输出:1

  return 0;
}

这些示例展示了不同用途下的"static"关键字的使用。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击