C++:变量和函数前怎样正确的使用static?

1.整个程序中共用的变量

在.h文件中声明:

extern int i;

在.cpp文件中定义:

int i=0;
也可以声明和定义一起完成:
extern int i=0;

此时,变量是在静态数据区分配的,extern可以不写,但变量前不能加上static

使用时先要做如下声明,并且不要将.h文件include进来:

extern int i;
2.仅在一个文件中共用的变量

一般在.cpp文件中声明并定义:

static int i=0;
此时, 变量也是在静态数据区分配的,必须加上static,static在此处不表示静态,而是范围修饰符,表示此变量的作用域仅为当前文件

如果是在.h文件中声明并定义:
static int i=0;
则多个.cpp文件include此.h文件后, 各个.cpp文件不会共用此静态变量i,而是各自创建各自的静态变量i,彼此之间互不影响
3.在类中共用的静态变量

在.h文件中声明:

class A{
static int i;
}
在.cpp文件中定义:
int A::i=0;
此时, 变量也是在静态数据区分配的,static表示定义的是一个静态变量。变量的作用域在类A的内部,且变量可以被类A的所有实例中访问
4.在方法中共用的静态变量
void func(){
static int i=0;
}
此时, 变量也是在静态数据区分配的,static表示定义的是一个静态变量。变量的作用域仅在方法func的内部
5.整个程序中共用的函数

声明和定义的方式与整个程序中共用的变量一样
在.h文件中声明:

extern void func();
在.cpp文件中定义:
void func(){
 // do something;
};
也可以声明和定义一起完成:
extern void func(){
 // do something;
};

此时,extern可以不写,但函数前不能加上static

使用时先要声明,但.h文件不要include进来:

extern void func();
6.仅在一个文件中共用的函数

一般在.cpp文件中声明并定义:

static void func(){
 // do something;
};
此时, 必须加上static,static在此处不表示静态,而是范围修饰符,表示此函数的作用域仅为当前文件

如果是在.h文件中声明并定义:
static void func(){
 // do something;
};
则多个.cpp文件include此.h文件后, 各个.cpp文件各自使用自己的func()
7.在类中共用的静态函数

在.h文件中声明:

class A{
static void func();
}
在.cpp文件中定义:
void A::func(){
 // do something;
};
此时, static表示定义的是一个静态函数。函数的作用域仅在类A的内部
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值