#include<stdio.h>
class A { public: int a;};
class B: public A {
public:
static int b;
B(){
b++;
printf("B:%d\n",b);
}
};
int main() {
A* a1 = new B[100];
A* a2 = new B();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误:
In function `main':
undefined reference to `B::b'
undefined reference to `B::b'
undefined reference to `B::b'
undefined reference to `B::b'
Run Code Online (Sandbox Code Playgroud)
Pie*_*BdR 16
静态变量需要在类外部分配.在B类之外添加这一行:
int B::b;
Run Code Online (Sandbox Code Playgroud)
将静态变量视为使用extern关键字声明.他们仍然需要在某处分配.这意味着分配永远不应该在头文件中!