(49)不要通过继承关系来为类的动态语义建模。试图用静态语义关系来为动态语义建模会导致在运行时切换类型。p97
(50)不要把类的对象变成派生类。对任何只有一个实例的派生类都要多加小心。p99
(51)如果你觉得需要在运行时刻创建新的类,那么退后一步以认清你要创建的是对象。现在,把这些对象概括成一个类。 p103
(52)在派生类中用空方法(也就是什么也不做的方法)来覆写基类中的方法应当是非法的。p103
(53)不要把可选包含同对继承的需要相混淆。把可选包含建模成继承会带来泛滥成灾的类。p108
(54)在创建继承层次时,试着创建可复用的框架,而不是可复用的组件。p112
(55)如果你在设计中使用了多重继承,先假设你犯了错误。如果没犯错误,你需要设法证明。p120
(56)只要在面向对象设计中用到了继承,问自己两个问题:(1)派生类是否是它继承的那个东西的一个特殊类型?(2)基类是不是派生类的一部分?p121
(57)如果你在一个面向对象设计中发现了多重继承关系,确保没有哪个基类实际上是另一个基类的派生类。p122
(58)在面向对象设计中如果你需要在包含关系和关联关系间作出选择,请选择包含关系。p135
(59)不要把全局数据或全局函数用于类的对象的薄记工作。应当使用类变量或类方法。p140
(60)面向对象设计者不应当让物理设计准则来破坏他们的逻辑设计。但是,在对逻辑设计作出决策的过程中我们经常用到物理设计准则。 p149
------解决方案--------------------题目出的还不错。
------解决方案--------------------c++中const的用法:
1.定义常量:const int a = 10; //将a定义为常量,值为10
2.修饰函数的参数: char* strcpy(char *sDest, const char *sSrc); //防止sSrc被意外修改
3.修饰函数的返回值:const char * GetString(void); //这个用法很特殊const char *str = GetString();
4.修饰函数体:void display() const; //(在类中)确保在display中不修改其他数据成员
------解决方案--------------------别的题目还好说,关于第一题,楼上的回答……
函数的副作用,基本上就是指函数干了不该干的事情,例如改变了全局变量的值啊,改变了不属于函数本身的局部变量的值啊什么的,还有的情况就是函数体内使用了goto语句,使程序的运行跳转到了另外的地方
至于如何利用,还没组织好语言,反正根据性质达成目的就是王道嘛
------解决方案--------------------惭愧呀
学习中!!
好帖 亚