主题:【注意】道歉--刀耕火种的繁荣时代 的连接上次给错了 -- 柚子
1)
void setValue(const int v){value=v;}
C/C++是Pass-by-value,所以对于简单数据类型的传值,const是不必要的。
一般在传一个reference或pointer的Input parameter使用const,来避免其内容被函数修改。
2)Point和Point3D之间不存在继承关系。(而Point和color_point之间存在继承关系)。
C++的继承关系是严格的IS_A关系,也就是说,Derived class必须拥有base class的所有public和protected属性和method。Base class的public virtual function可视作derived class的一个default implementation。(在base class无法缺省实现时,则常为pure virtual function),显然因为3D的Point多了一个z坐标,彻底改变了2维点的物理意义,两者没有这种IS_A关系。严格来说这更像一个Has-A关系。
虽然数学上两者有紧密联系,而在C++中因为不是严格的IS_A关系,所以不能使用继承。
因为多一个Z-坐标,2D point和3D point只能视作两个独立的class,或许实现上3D point class可以composite 2D point class.
Scott Meyers在他的Effective C++有一个Item(记不清是具体哪个Item了)是专门解释这一点了。记得他老人家举的例子是,矩形和正方形之间不存在继承关系。
3)Thread这个例子有个明显问题,
queue_不是thread safe的,对queue_的操作应要加上Mutex或其他类似的东东加以保护。
- 相关回复 上下关系7
【注意】道歉--刀耕火种的繁荣时代 的连接上次给错了 柚子 字19619 2006-03-11 03:53:47
【讨论】几个商榷的地方
谢谢回贴 柚子 字2818 2006-03-14 03:05:36
这次又被我逮住小两口共用一个ID的证据了 wsxx 字47 2006-03-14 04:04:47
🙂hehe ,抱歉拉,以后我就不做二传手了。 柚子 字0 2006-03-14 04:25:28
没有关系的啦 wsxx 字20 2006-03-14 04:41:35
🙂那就要看各位的魅力了。 柚子 字26 2006-03-14 08:09:46