我們可以說「C語言運算符是多態的」嗎? 例如,如果在組裝時我們可以說「C語言運算符是多態的」嗎?
int a, b;
float p, q;
a+b;
a+p;
p+q;
等會產生不同的代碼,作爲類型轉換所需的浮點協處理器指令需要被執行以使轉化率和浮點加法。所以操作員根據他們所作用的對象的不同而不同。
雖然這些都是隱含的,所以如果這在理論上可以稱爲靜態多態,那麼運算符重載?
我們可以說「C語言運算符是多態的」嗎? 例如,如果在組裝時我們可以說「C語言運算符是多態的」嗎?
int a, b;
float p, q;
a+b;
a+p;
p+q;
等會產生不同的代碼,作爲類型轉換所需的浮點協處理器指令需要被執行以使轉化率和浮點加法。所以操作員根據他們所作用的對象的不同而不同。
雖然這些都是隱含的,所以如果這在理論上可以稱爲靜態多態,那麼運算符重載?
如果我們考慮到運營商+
的功能,那麼它的多態函數的定義相匹配,因爲它可以「評估或可適用於不同類型的值」。所以是的,這是一個polymorphic函數。
是的,理論上這可以稱爲靜態多態或操作符重載。但是由於多態性在語言定義的適用範圍內是固定的,所以它不是一個非常有趣的多態。
爲什麼不能? – 2011-06-04 09:52:47
我相信我們*可以說* C(或其他類似語言)中的運算符是多態的,想知道他們實際上被考慮的是什麼。因爲多態性是隱式演示的,並且不允許用戶編程。 – phoxis 2011-06-04 10:00:18
我同意。但是,大多數情況下,多態只有在可以添加到它時纔會非常有用,就像在C++中可以重載操作符(和函數)一樣。在C中,實現動態多態以及大量的宏hackery(可能還有一個自定義的預處理器)來實現任何形式的程序員定義的靜態多態性需要花費很多精力。 – 2011-06-04 10:11:12