看板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