看板java
标 题Re: 请问阵列的宣告…
发信站清华资讯(枫桥驿站) (Thu Jun 24 01:52:27 2004)
转信站ptt!ctu-reader!ctu-peer!news.nctu!netnews.csie.nctu!news.cs.nthu!maple
※ 引述《[email protected] (蓝月枫铃)》之铭言:
> ※ 引述《[email protected] (benqer)》之铭言:
> > 隐式template? 没听过这种东西, 也不知道用处在哪
> 就是把本来该写出 template 的地方省略不写。
那你要如何处理以下的问题
1. template<typename T>
void func(T p)
{
typename T::size_type i= p.size();
}
现在你说可以把template省略, T也可以省略,
那请问省略之後, 要如何才能取得参数p的型别(原本为T)的typedef ?
如同上例, 我们原本可以用typename T::来取得关於T type的其他资讯
现在你把这些重要资讯都省略了, 要如何解决以上的问题?
2. template的template parameter不一定只用在函式的参数上, 也可能是
用在函式的区域变数 ex
template<typename T>
T max(T p1, T p2)
{
T result;
if (p2>p1) result = p2;
else result= p1;
return result;
}
如同上例, 请问如果template跟T都省略了, 你如何指定result跟
p1,p2同type这个事实?
> > 使用template就意谓者型别必须於编译期决定, (多型型别除外), ex
> > cout 是ostream type的物件, 但他的实作并不是去处理执行期才确定的物件
> > 而是针对每种物件定义出不同版本的function, 再由compiler辨析该采用的版本
> 正是如此。 fb(x) 不必在编译时期确定其型别!
"由compiler辨析该采用的版本"这句话说得还不够清楚吗?
你要不要再回去K一下c++的书再来讨论?
> > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > 你真是说了天大的笑话了, 型别安全和效能恰巧就是scrip的缺点,
> > 你如果要说服大家的话,就拿出理由来证明吧
> 在本文之初,就已经说明,并非指现状,而是指出一个发展方向。
> 它可以是同时满足型别安全与执行效能的。
根本就是屁话, 你有什麽知识跟经验够格为大家指出c++的未来发展方向?
连基础知识都不够, 只是看了script的动态弹性就一厢情愿的自以为是灵
丹妙药, 如果你这麽喜欢script, 请改用smalltalk, static type的c++
是不合你胃口的
> > 既然说是template, 又说是由compiler检查type-safety,
> > 那又何来以上所说runtime才确定型别的说法?
> > 你的观念很矛盾
> 就如同 C++ 的指标可以 new 初衍生类别一样。只不过这样还不够弹性。
> understand?
什麽弹性? 你可以用那样的弹性应用在那里?
有弹性就一定好喔 ? , 自己再想想吧
> > 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);
> }
> 以这个例子来说,编译器至少应该自动去找他的基础类别才是。
蠢得要命, function signature不指定回传的type, 要让compiler自己猜
就为了少打几个字, 使用此function的人从此得从function的comment or document
猜回传的型别.
我想你乾脆就把c++改成type-less, 所有的type都由compiler
从程式中粹取导出定义好了.
--
※ Origin: 枫桥驿站<bbs.cs.nthu.edu.tw> ◆ From: NK219-91-116-171.adsl.dynamic.apol.com.tw