c++继承(六)——继承与静态成员

    技术2023-08-01  103

    基类定义了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的成员不管有多少个子类,多少个对象都是只有一份。

    Processed: 0.008, SQL: 9