C++ 继承机制深度解析
1. 员工数据管理与抽象基类
在处理员工数据时,程序会让用户输入不同类型员工的信息,如经理、科学家和普通劳工。示例中输入经理 1 的高尔夫俱乐部会费为 1000000,经理 2 的姓氏为 Bradley,编号为 124,职位为副总裁,高尔夫俱乐部会费为 500000;科学家 1 的姓氏为 Hauptman - Frenglish,编号为 234234,发表文章数量为 999;劳工 1 的姓氏为 Jones,编号为 6546544。之后程序会将这些信息回放显示。
更完善的程序会使用数组或其他容器来整理数据,以容纳大量员工对象。这里涉及到“抽象”基类的概念,以员工类(employee)为例,我们不会定义该基类的对象,它仅作为一个通用类,是其他类派生的基础。劳工类(laborer)与员工类操作相同,因为它没有额外的数据或函数。虽然看起来劳工类似乎不必要,但将其作为一个单独的类,可以强调所有类都源自员工类。而且,如果未来要修改劳工类,无需更改员工类的声明。
仅用于派生其他类的类,有时被宽泛地称为抽象类,即不会创建该类的实际实例(对象)。不过,“抽象”这个术语在后续会有更精确的定义。
在基类和派生类中都没有构造函数,当编译器遇到如 manager m1, m2;
这样的定义时,会自动使用经理类的默认构造函数调用员工类的默认构造函数来创建各类对象。员工类中的 getdata()
和 putdata()
函数用于从用户处获取姓名和编号,并显示这些信息。经理类和科学家类中也有同名的 getdata()
和 putdat