基类定义了static静态成员,则整个继承体系里面只有一个这样的成员。无论派生出多少个子类,都只有一 个static成员实例 。
在这里需要注意的有static修饰的成员,只能在类中进行声明,类外定义,至于为什么我们可以参考这一篇博客:为什么static数据成员一定要在类外初始化
class Person { public: Person() { _count++; } private: string _name; public: static int _count; }; int Person::_count = 0; class Student :public Person { private: int _num; }; class Teacher : public Person { private: string _school; }; int main() { Student s1; Student s2; Student s3; Teacher t; cout << "人数:" << Person::_count << endl; cout << t._count << endl; Person::_count = 0; cout << "人数:" << Person::_count << endl; cout << t._count << endl; return 0; }我们发现虽然我们定义了不同的类的对象,但是他们都是用的同一个count,也就是说static的成员不管有多少个子类,多少个对象都是只有一份。