作者littleshan (我要加入剑道社!)
看板C_and_CPP
标题Re: [心得]C++为何只把宣告放在HEADER FILE 内?
时间Sun Apr 30 21:15:36 2006
: 推 GoldenField:如果不知道档案型态的时候 用void*不是很正常吗? 04/30 19:52
: → GoldenField:应该是 变数型态 04/30 19:52
比较好的作法是 polymorphism
你虽然不知道它真正的型态
但你知道要如何操作它
所以应该把操作界面抽出并定义为 base class
然後再衍生出可能的 subclass
这边我说的 polymorphism 不只是 dynamic polymorphism
使用 template 达成的 static polymorphism 也可以办到
使用 void* 不是不能解决问题
但只要你把某个指标转成 void*
就失去了所有的资讯
所有的物件只要被转成 void*
不管它们有没有共同的操作界面
都会被一视同仁地对待
因此程式设计师必须花费多余的力气去分辨它们
这是个很值得讨论的部份
因为它是 C 与 C++ (或是说 procedural 与 OOP)在思维上的重大差异之一
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.62.3.35
1F:推 tomex:深表赞用,C#各类别都继承自Object, C++写作时该多使用介面 04/30 23:00