看板java
标 题Re: 请问阵列的宣告…
发信站KKCITY (Wed Jun 23 14:39:50 2004)
转信站ptt!ctu-reader!ctu-peer!news.nctu!netnews.csie.nctu!news.ee.ttu!news.n
※ 引述《[email protected] (benqer)》之铭言:
> ※ 引述《[email protected] (蓝月枫铃)》之铭言:
> > fa 只是一个函数。
> > NO, function(x) 并不是用一个共通的 type ,而是使用「隐式 template」!
> > 我的 script 是可以编译为执行档的。
> 隐式template? 没听过这种东西, 也不知道用处在哪
就是把本来该写出 template 的地方省略不写。
> > NO, 编译时期无法确定其型别,但是执行时期可确定。
> > 因为我们不必在编译时期就确定他的型别!例如 cout << fb(x);
> 使用template就意谓者型别必须於编译期决定, (多型型别除外), ex
> cout 是ostream type的物件, 但他的实作并不是去处理执行期才确定的物件
> 而是针对每种物件定义出不同版本的function, 再由compiler辨析该采用的版本
正是如此。 fb(x) 不必在编译时期确定其型别!
> > script 可以不损及型别安全和效能。这就是我对 C++ 不甚满意的地方。
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> 你真是说了天大的笑话了, 型别安全和效能恰巧就是scrip的缺点,
> 你如果要说服大家的话,就拿出理由来证明吧
在本文之初,就已经说明,并非指现状,而是指出一个发展方向。
它可以是同时满足型别安全与执行效能的。
> > 如上所述,并非使用共通型别,而是使用「隐式 template」,
> > 再由编译器检查是否符合所有算子以及成员。 时下的 template 不也如此?
> 既然说是template, 又说是由compiler检查type-safety,
> 那又何来以上所说runtime才确定型别的说法?
> 你的观念很矛盾
就如同 C++ 的指标可以 new 初衍生类别一样。只不过这样还不够弹性。
understand?
> > 已经说过原因了,我们并不需要在编译时期就确定他的型别!
> > 时下 C++ 的 virtual 不也如此?我只能说 C++ 太嫩。
> c++太嫩? 我看是你太嫩, 你根本不了解c++的多型跟泛型的意义 就在此妄下断言
> virtual/多型 允许物件的确切型别可以在runtime决定, 但是在compile-time,
> 多型物件仍会遵循其base class的规则,由compiler进行检查, 正因为多型物件
> 在runtime是以base class物件的方式来使用, 所以即使compiler不知道多型物件
> 的确切型别,也没有违反type-safety的危险.
> (多型物件以concret type object来使用时当然也就遵循各别多型物件的规则)
C++ 的缺点,就是必须要以人工的方式作类别正规化。
function dynamic(x)
{
if (x%1)
return Circle(x);
else
return Square(x);
}
以这个例子来说,编译器至少应该自动去找他的基础类别才是。
--
┌─────◆程式设计乐园◆─────┐ ╱ ╱  ̄ ▌ ̄  ̄ ╲╱ BBS 城邦
│ CSZone.kkcity.com.tw │ ╲ ╲ ╴ ▌ ▌ ▏ KK免费拨接
└──《From:220.138.225.5
》──┘ 电话:449-1999 帐号:kkcity 密码:kkcity