修饰函数
修饰成员函数,标识该函数为类静态函数,只能访问static修饰的静态成员变量或函数。
修饰普通函数,函数的作用域只在本文件
修饰变量
修饰成员变量
需要在函数体外进行初始化
被所有成员共享
可以被普通成员函数访问,也可以被static成员函数访问
修饰局部变量
变量生命周期变长
修饰全局变量
变量的作用域只在本文件
示例代码
static.h
#ifndef STATIC_H
#define STATIC_H
//修饰全局变量
static const int MYSIZE = 0;
void Func();
class MyClass
{
public:
static void Func();
private:
int val_;
static int sval_;
};
#endif // STATIC_H
static.cpp
#include "static.h"
#include <iostream>
int globalVal = 1;
//修饰全局变量
static int sglobalVal = 2;
void Func()
{
std::cout << MYSIZE << std::endl;
}
//静态成员变量必须在类外初始化
int MyClass::sval_ = 1;
void MyClass::Func()
{
//无法访问非静态成员
//val_ = 1;
//只能访问静态成员
sval_ = 2;
std::cout << sval_ << std::endl;
}
main.cpp
#include <iostream>
#include "static.h"
using namespace std;
//普通的全局变量可以通过extern声明在其他文件中使用
extern int globalVal;
//被static修饰的全局变量,即使被extern修饰也会编译报错
//extern int sglobalVal;
int main()
{
cout << "Hello World!" << endl;
Func();
cout << MYSIZE << endl;
cout << globalVal << endl;
MyClass::Func();
return 0;
}