首先我们可以将 static 的使用场景分成两部分,一部分在类内,一部分在类外。
类内
对于类内的 static 关键字,它可以被用在方法和变量上,这意味着这个类的所有实例将共享这些 static 的东西,无论是变量还是方法。
初始化方式
这里我给出一种比较简洁的
#include <iostream>
void print(int ele) { std::cout << ele << std::endl; }
class A {
public:
static int a;
};
int A::a = 2;
template <typename T>
class B {
public:
static int a;
};
template <typename T>
int B<T>::a = 1;
int main(int argc, char const *argv[])
{
print(A::a);
print(B<int>::a);
return 0;
}类外
这一部分非常简单,如果一个变量或者函数在类外被声明为 static,那么它只会在当前的编译单元也就是 cpp 文件内可见,在链接阶段,这个 static 的东西对于外界是透明的。