首先我们看一下这样一段程序:
#include<iostream>
using namespace std;
class MyClass
{
public:
static int count;
};
int MyClass::count = 5;//必须有初值
int main() {
MyClass a;
MyClass b;
a.count = 20;
cout << b.count << endl;
}
这时候cout会输出什么呢?
如果答案是5或者0,那么你的答案和好多初学者是一样的,但并不是正确的,这正是static这个类的特殊性质。
static类成员不像普通的类数据成员,static类数据成员独立于一切类对象处在。static类数据成员是与类关联的,但不与该类定义的对象有任何关系。这句话什么意思?就是static不会想普通类数据成员一样每一个类对象都有一份,全部类对象是共享一个static类成员的,例如A类对象修改了static成员为1,那么B对象对应的static类对象成员的值也会是1