• 在一个类中以另一个类的对象作为数据成员的,称为类的组合(composition)。

      • 例:声明Professor(教授)类是Teacher(教师)类的派生类,另有一个类BirthDate(生日),包含year,month,day等数据成员。可以将教授生日的信息加入到Professor类的声明中

        1. class Teacher//教师类
        2. {public:
        3. private:
        4. int num;
        5. string name;
        6. char sex;
        7. };
        8. class BirthDate //生日类
        9. { public:
        10. private:
        11. int year;
        12. int month;
        13. int day;
        14. };
        15. class Professor:public Teacher //教授类
        16. {public:
        17. private:
        18. BirthDate birthday; //BirthDate类的对象作为数据成员
        19. };
      • Professor类通过**继承,从Teacher类得到了num, name, age, sex等数据成员;通过组合**,从BirthDate类得到了year, month, day等数据成员。

      • 继承是纵向的,组合是横向的**。 **
      • 如果定义了Professor对象prof1,显然prof1包含了生日的信息。通过这种方法有效地组织和利用现有的类,大大减少了工作量。