原 靜態型別和動態型別

2021-08-29 09:26:45 字數 710 閱讀 3674

概念解釋:

1。所謂靜態型別:就是在宣告時所採用的型別,僅僅是程式文字上表現出來的型別。

2。所謂動態型別:就是將來物件將要表現的的型別,也可以說時執行時表現的型別。

好了,概念已經解釋完了。那麼這兩個概念有什麼現實的意義呢?

1。效率:

在效率上靜態型別要比動態型別快得多;

2。設計:

在設計時候往往把介面中得物件型別宣告為baseclass型別得指標或引用,但是執行時候該物件有可能是該baseclass的derivedclass,這種特性在設計介面時是非常重要的。可以說,正式有了這種特性才能夠把「介面」和「實現」解藕。

在設計上另乙個突出的應用時factorclass,大多數實現factorclass類的時候,都會實現create函式(或相同語義函式),該函式的返回型別一般都是baseclass,這樣執行時,函式內部返回derivedclass時候,雖然宣告為baseclass但是真正的型別仍是derivedclass。

例子:class person:;

class student: public person;

class teacher: public person;

int main(void)

這個例子中:pstuent 和 pteacher的靜態型別都是person,但是它們的動態型別分別是stuent和teacher。所以可以看出靜態型別僅僅是一種語義上的表示,真正起作用的還是動態型別。

強型別與弱型別,靜態型別和動態型別

首先強弱是相對的。強型別 每個變數和物件都必須宣告型別,在編譯時確定好型別了,執行時不能更改。偏向於不容忍隱式型別轉換。譬如說haskell的int就不能變成double。弱型別 編譯時不確定型別,執行時根據語義確定是哪種型別。通俗地說,弱型別偏向於容忍隱式轉換,把不同型別的變數放在一起運算。靜態型...

靜態型別與動態型別

為了支援c 的多型性,才用了動態繫結和靜態繫結。理解他們的區別有助於更好的理解多型性,以及在程式設計的過程中避免犯錯誤,需要理解四個名詞 1 物件的靜態型別 物件在宣告時採用的型別。是在編譯期確定的。2 物件的動態型別 目前所指物件的型別。是在執行期決定的。物件的動態型別可以更改,但是靜態型別無法更...

C 物件的靜態型別和動態型別

由於繼承導致物件的指標和引用具有兩種不同的型別 靜態型別和動態型別。靜態型別 指標或者是引用宣告時的型別。動態型別 由實際指向的型別確定。gameobject pgo new spaceship pgo 靜態型別是 gameobject 動態型別是 spaceship asterioid pa ne...