【发布时间】:2011-10-05 03:58:31
【问题描述】:
今天在我的课上,我们进行了继承练习。我们要编写一个继承自 Student 类的 UnderGrad 类,该类继承自 Person 类。
Person 类有 3 个变量:姓名、地址和生日。
学生有一个 ID 号、专业和学位类型。
最后,本科生有以前的高中和学分获得变量。
当我为每个类编写头文件时,默认构造函数如下所示:
//snippet from UnderGrad.h
Undergrad(string nm = "", string add = "", string bday = "", int id = 0, string maj = "", string degtyp = "", string hs = "", int cred = 0) : Student(nm,add,bday,id,maj,degtyp) {
highSchool = hs;
credits = cred;
};
//snippet from Student.h
Student(string nm = "", string add = "", string bday = "", int id = 0, string maj = "", string degtyp = "") : Person(nm,add,bday){
stuId = id;
major = maj;
degreeType = degtyp;
};
//snippet from Person.h
Person(string nm = "", string add = "", string bday = ""){
name = nm;
address = add;
bDay = bday;
};
我的教授说这是不可读的,而且它不是真的这样做的。
我想知道,以这种方式创建默认构造函数有什么问题?有什么问题吗?有没有更好的方法?
【问题讨论】:
-
你应该问你的教授他们对这部分的哪一部分有问题。
-
代码一目了然!我认为没有什么可抱怨的。
-
这段代码中唯一不清楚的是使用嵌套继承和非抽象非叶类的基本原理。这似乎不太可能有助于解决任何实际的编程问题。
-
叶类是位于继承树底部的类。也就是说,没有其他类继承自的类。
标签: c++ constructor