21xrx.com
2024-09-20 00:31:36 Friday
登录
文章检索 我的文章 写文章
C++语言中static的作用和用法详解
2023-06-27 10:23:46 深夜i     --     --
C++ static 作用 用法 详解

在C++编程中,我们经常会遇到static这个关键字。那么,什么是static,它的作用是什么,该如何使用它呢?本文将会一一阐述。

static是一个关键字,可以用于指定变量、函数和类成员的作用范围和生命周期。下面,我们分别来讲解它们的作用。

一、静态变量

静态变量是指,它们的内存空间在程序编译时就已经分配好了。这意味着,即使在函数外也能够访问该变量。而且,静态变量只会被初始化一次,即第一次调用函数时。对于后续每个函数调用,静态变量的值都会保持不变。例如:


int getID() {

  static int id = 1;

  return id++;

}

int main() {

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

    cout << getID() << endl;

  }

  return 0;

}

该程序输出结果为:


1

2

3

4

5

因为静态变量id只会在第一次调用函数时被初始化,之后每次调用都会返回递增的值。

二、静态函数

静态函数只能在声明它的文件中调用,不能被其他文件中的函数调用。这种方式可以防止其他文件中的函数意外地调用到该函数,保证代码的安全性。此外,静态函数在链接时不会被其他模块所看到,因此也不会影响代码的可重用性。


static int add(int a, int b) {

  return a + b;

}

int main() {

  cout << add(1, 2) << endl; // 这里会报错

  return 0;

}

在这个例子中,我们将add函数声明为静态函数。在main函数中,我们试图调用它,但是会报编译错误,因为它不能被其他文件所见。

三、静态类成员

静态类成员是指,在整个类的实例中只有一份,它们不属于任何一个类实例,而是属于类本身。静态成员可以被所有的实例共用,即使没有创建任何类的实例。另外,静态成员变量需要在类外进行初始化,因为它们不属于任何一个类实例。


class Bus {

public:

  static int numOfBuses;

  Bus() {

    numOfBuses++;

  }

};

int Bus::numOfBuses = 0; // 静态变量需要在类外进行初始化

int main() b

在这个例子中,我们定义了一个静态变量numOfBuses,用于记录Bus类的实例个数。在每个实例的构造函数中将其自增,最后输出结果为3。

总结:

静态变量、静态函数和静态类成员都是C++编程中常用的关键字。它们的作用分别是:让变量具有全局作用域和静态生命周期;限定函数的作用范围和访问权限,提高代码安全性;使类成员具有全局性和唯一性。准确使用它们,有利于提高代码的可读性、可维护性和可重用性。

  
  

评论区

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