他不是说多文件容易出错吗?
1.cpp
int fun()
{
static int a = 10;
a++;
return a;
}
int main()
{
//fun();
cout<<fun()<<endl;
return 0;
}
11.cpp
static int a = 1;
int fun(int a);
12.cpp
extern int a;//这个时候a非11.cpp中的a,要是外部变量的话,去掉11.cpp中的static。因此static有一种用法就是多个文件中都有a,
//如果此文件中的a加上了static,那么该文件的a,只供该文件使用,别的文件彼a非此a;
int fun (int a)
{
return a + 1 ;
}
如果是类里面,由于静态成员为类的公用变量,在第一次使用时就被初始化,所有的对象使用的是同一static成员,一般要用静态方法(函数)使用静态成员。(静态函数是不是所有对象公用同一个,我不是很清楚,应该跟静态成员类似吧)。
如果是函数前面有staitc修饰,那该函数为静态全局函数,与不加static的区别在于,只能在该文件中使用,用法与上面提到的静态成员类似。
还要注意的一点,就是static的作用域,
mian()
{
for()
{
static int a;
}
}
这种情况下的话static也为全局变量,只是在for的外面不能使用。
关于内联函数的话就是把函数的定义直接拿到需要使用该函数的地方,如果是普通全局函数并没什么问题,可要是静态函数的话,那么在调用静态函数的地方就要共用同一份内容,感觉会有问题。大概就是这么理解吧,部分问题遇到过,实践过,部分猜测。请识别!