g*********s 发帖数: 1782 | 1 设计规范如下:
设计学生类,其中残疾学生需要一些附加信息。学生对象全部放在map
allStudents里。
因为希望尽量省内存,当前的实现:
class Student{
...
bool disabled;
public:
Student::Student():disabled(false) {}
bool isDisabled() { return disabled; }
};
class DisabledStu: public Student {
...
public:
DisabledStu: disabled(true) {}
};
但是觉得这个打印学生信息的函数实现比较别扭。这里面的类型转换是不是没有必要啊
?另外类结构是不是设虚基类Student,然后用NormalStudent和DisableStudent分别继
承更清晰?
void printStuInfo(int index){
it = allStudents.find(index);
if (it!=allStudents.end()) {
Student *st |
y****e 发帖数: 23939 | 2 为什么不用一个virtual printInfo() function, 让class自己take care打印的问题。
用base class的pointer call这个打印函数就可以了,那才是polymorphism吧。 |
p**********g 发帖数: 187 | 3 stupid design. just add setdisabled() and eliminate the derived class. |
g*********s 发帖数: 1782 | 4 Acid-tongued words won't show your smartness but low taste.
【在 p**********g 的大作中提到】 : stupid design. just add setdisabled() and eliminate the derived class.
|
P********e 发帖数: 2610 | 5 that's what I feel
【在 g*********s 的大作中提到】 : Acid-tongued words won't show your smartness but low taste.
|