小神童你好神阿,短短時間就可以打出這麼多東西。
你真是有料的人阿,怪不得稱為小神童。可惜我看 2 段就眼花了。
我先送你一隻花,不過東西太長,我先抓一個重點問問。
我很好奇其他 3 朵花是誰送的?
引用:
我們來思考一件最基本的動作, 一個compiler or 一個interpreter 如何去產生一段runtime 程式碼
配合下列這一段
引用:
如果, 程式是執行時期才去辨認該用哪個function, 那麼程式很輕易的就會掉入一個陷阱裏面, 假設function Power 有三種型態, 分別是: Power (int, int), Power (char, char), Power (int, char)
今天寫程式的人沒留N到, 寫了一個 Power (char, int), 那麼, 這個錯誤是不是要等到執行時期才發現他錯? compiler 沒有能力也不該有能力發現他錯誤呢? 因為compiler 並不負責去辨認該怎麼call, right ? 可是實際上, 不管使用哪一種OO 語言, 他都是在compiler 時期就被挑出來的錯誤, 呵
加上原文
多型在程式執行期利用動態連結(Dynamic Binding)的方式.....
這裡所說的「動態連結(Dynamic Binding)」,不知道 Acute 是怎麼定義或去看?
我對底層沒有研究,有錯請加以指正。
舉一個例子,compile 時會先編譯多個 functions,執行時配合 object 型態去呼叫那一個 function,這就叫做動態連結,所以只要在記憶體還是哪裡配置一個區塊,專放物件要存放的資料就好。
所以沒有產生額外的程式碼,只有產生額外的資料。
至於 Power (char, int) 這個錯誤如果等到執行時期才發現,我覺得應該會因為沒有定義到這個 function,所以當然編譯錯誤,不用等到執行,這好像跟多型沒關係?就像你呼叫一個你沒定義的變數 X 一樣。
哈,我覺得我好像不太對!
因為抓不到小神童要問的重點!
[jocosn 在 2005-4-19 10:31 AM 作了最後編輯]