admin管理员组

文章数量:1530033

2024年5月31日发(作者:)

c++的static关键字用法

C++中的`static`关键字有多种用法,在不同的场景下都有着不同的含义和作用。本

文将详细介绍C++中`static`关键字的用法及其相关特性,希望能对读者更好地理解和运

用这个关键字。

一、`static`关键字概述

`static`是C++中的一个关键字,它常用于指定函数、变量、类成员等的作用域和生

命周期。它的主要作用如下:

1. 限定变量的作用域。使用`static`关键字声明的变量具有静态的生存期和块作用

域,即在整个程序运行期间都存在,并且只能在声明变量的源文件中访问。

2. 限定函数的作用域。使用`static`关键字声明的函数具有静态的作用域,即只能

在声明它的源文件中调用。

3. 限定类成员的作用域。使用`static`关键字声明的类成员为静态成员,它不属于

类的任何一个对象,而是属于整个类,可以通过类名或类对象来访问。

4. 防止符号重定义。当在多个源文件中定义同名的全局变量或函数时,使用

`static`关键字可以防止它们之间的符号重定义错误。

二、静态变量

1. 全局静态变量

使用`static`关键字声明的全局变量具有静态生存期和文件作用域,即它在程序运行

期间一直存在,而且只能在声明它的源文件中访问。例如:

```cpp

//

#include

static int count = 10; //声明全局静态变量count

void func() {

static int i = 5; //局部静态变量i,生命周期为整个程序运行期间

std::cout << "i is " << i ;

std::cout << " and count is " << count << std::endl;

i++;

count++;

}

```

在另一个源文件中引用这个全局静态变量,编译器会报错:

```cpp

//

#include

extern int count; //声明全局变量count

void func2() {

std::cout << "count is " << count << std::endl;

}

```

编译器会报错:undefined reference to `count'。这是因为全局静态变量只能在声

明它的源文件中访问,其他文件中的代码无法访问它。

如果把全局变量count声明为`extern`变量,其他源文件就可以引用它了:

```cpp

//

#include

static int count = 10; //声明全局静态变量count

void func() {

static int i = 5; //局部静态变量i,生命周期为整个程序运行期间

std::cout << "i is " << i ;

std::cout << " and count is " << count << std::endl;

本文标签: 静态变量声明