有人定义一个教师类派生一个学生类。他认为“姓名”和“性别”是教师、学生共有的属性,声明为public,“职称”和“工资”是教师特有的,声明为private。在学生类中定义特有的属性“班级”和“成绩”。所以有:
class teacher { public : char name[20]; char sex; //… private : char title[20]; double salary; }; class student : public teacher { //… private : char grade[20]; int score; };
你认为这样定义合适吗?请给出你认为合理的类结构定义。
不合适,这样导致数据冗余。合理的结构是提取它们共有的数据和操作定义一个基类,然后分别定义teacher和student作为派生类。