java 板


※ 引述《[email protected] (benqer)》之銘言: > > 我一直希望 C/C++ 能夠把他化簡成 > > function fa (x) > > { > > if (x % 1) > > { > > cout << "Yes!"; > > return 1; > > } else { > > cout << "No!"; > > return 0; > > } > > } > 用template+轉型設施已經可以達成你要的效果, 而且還有type-safe的優 > 點 > 如下: > template<typename P> > int fa(P& x) > { > if (x % 1) {...return 1;} else{return 0;} > } > int i= fa(1); > class1 c1= fa(1); //class1中必須定義建構式 class1(int i), > // operator=(int i); > class2 c2= fa(class3()); //class2 中必須定義建構式 class2(int i) , > // operator=(int i); > // class3必須定義 operator % fa 只是一個函數。 > 這樣的作法跟script的差別就在於script用一個共通的type來函括所有type NO, function(x) 並不是用一個共通的 type ,而是使用「隱式 template」! 我的 script 是可以編譯為執行檔的。 > (如vb的variant, js的var) 所以當函式回一個共通的type時,他可能是 > int, 可能是char, 可能是一個object, 這時程式要怎麼處理就完全依靠 > 程式"內隱"的規則. 例如, > function func(x) > { if (x==1) return CreateObject("xxx.xxx"); > else return 1;} > 請問, 呼叫func的客戶端要怎麼能知道他拿到的是int還是 object? > 答案是客戶端得去了解func的實作內容. 這樣的情形嚴重的傷害到程式 NO, 編譯時期無法確定其型別,但是執行時期可確定。 因為我們不必在編譯時期就確定他的型別!例如 cout << fb(x); !!!!!!!!!!!!!!!! > 的封裝與抽像特性. 所以script並不適合開發大型程式. > 而使用c++, 你可以使用template讓function享有類似script的彈性 > 又不損及type-safety及runtime performace. 댊 script 可以不損及型別安全和效能。這就是我對 C++ 不甚滿意的地方。 > high-level, type-safety, efficiency是c++的特性, 要讓c++改用 > script的方式就好像叫c++自廢武功一樣 > 至於你下面所提的例子, 事實上script的變數並非沒有型別, > 而是他們都是繼承至同一個共通的型別,好比是java跟.net的共同基底類別 如上所述,並非使用共通型別,而是使用「隱式 template」, 再由編譯器檢查是否符合所有算子以及成員。 時下的 template 不也如此? > vb的variant也是類似的觀念. 而script把這類別的宣告藏了起來,好讓程式 > 簡化. 所以以下面的c++程式來看, c++也只是把這之間的關係描述出來. > 你可說c++很繁瑣, 但是至少, 在程式中描述出來的繼承關係, 可以讓 > compiler提早揪出錯誤的型別使用. 減少在runtime出錯的可能. 更可加強 > 程式的可讀性,結構性,邏輯性. 你可以想像一下, 如果dynamic傳回 > 的一定是bicycle or car之類的交通工具, 為何不在程式明確的指出 > dynamic只會回傳交通工具這件事 ,卻要讓使用者冒著可能不小心把回傳 > 的交通工具當成建築物來使用的風險, 其道理何在? 已經說過原因了,我們並不需要在編譯時期就確定他的型別! 時下 C++ 的 virtual 不也如此?我只能說 C++ 太嫩。 > 另外, union的作法絕對是最差的,完全不用考慮. > > 深入範例:(很重要的編程風格範例) > > 嘗試思考下面這個例子: > > function dynamic (x) > > { > > if (x % 1) > > return Bicycle(x); > > else > > return Car(x); > > } > > 這可好了,編譯器該如何做?我嘗試著將上面的函式翻譯成 C++ > > 解法一:使用基礎類別再加以繼承之。 > > class CC { …略… } ; > > class Bicycle : CC { …略… }; > > class Car : CC { …略… }; > > template<class T> > > CC * dynamic(T x) > > { > > if (x%1) > > return new Bicycle(x); > > else > > return new Car(x); > > } -- ┌─────程式設計樂園─────┐  ̄ ▌ ̄ ╲╱ BBS 城邦 CSZone.kkcity.com.tw ╴ ▌ ▌ ▏ KK免費撥接 └──From:61.231.188.131 ──┘ 電話:449-1999 帳號:kkcity 密碼:kkcity







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草
伺服器連線錯誤,造成您的不便還請多多包涵!
「贊助商連結」






like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP