C 函式怎麼實現同乙個形參位置可以接受不同型別的實參?

時間 2021-05-07 06:05:26

1樓:王賽

這也算是多型,有多種手法可以達到這個目的。

預處理期用函式巨集。

編譯期用過載或模板。

執行期的用型別擦除,可以用 variant 或 union 擦除限定範圍型別,callback 風格使用 void*,std::function 或是 virtual 介面的類型別。

2樓:d41d8c

正常寫就行。

比如 void f(int); 可以接受 int、unsigned int、long、float、double 等型別的實參。

3樓:ll323

使用placeholder type specifier[1][2]autof(

auto&&x

)autox=

f(1);

// x == 2

autoy=

f(3.14

);// y == 6.28

autoz=

f("aa"s);

// z == "aaaa"

注意一旦函式的引數列表出現auto, 它的性質將發生根本性的改變, 它將由乙個function變成乙個function template

autow=

f;// error: unresolved overloaded function type

autov=

static_cast

)(const

int&

)->int>(f

);// OK, monomorphizes f

c 中乙個只有有參建構函式的類怎麼做為函式的形參?

GarfieldKwong 你編譯錯誤的原因其他答主已經說清楚了,就是DepthFirstSearch裡的成員Graph g導致的。DepthFirstSearch的建構函式沒有顯示初始化Graph g,編譯器預設呼叫Gragh 良好的是類的建構函式裡每個成員變數都要顯示初始化。其實編譯器裡Dept...

同乙個函式影象可以表述為兩個不同函式嗎?

鐵向榮 可以。舉例 和 用對映的原理分析。設原對映為 把它作為你所說的原函式影象。令新對映為 和 那麼原對映 就可以看作是 與 的合成。也就是新函式影象。可見,是重合的。請模擬向量運算的平行四邊形法則,不看過程,只看結果 歡歡 可以,比如 y sin x 2 n n Z,y cos 2x n n Z...

java如何實現同乙個瀏覽器同的乙個系統只能登入乙個賬號,如果登入了第二個,第乙個賬號自動登出?

zhangs1314 樓主的意思可能是在同乙個瀏覽器裡面的不同的標籤頁,訪問了同乙個專案,後面登入進去的賬號,把前面登入進去的賬號踢掉.以前俺的做法,一般是用ws協議做長連線.每乙個長連線的唯一標記是乙個sessionId.登入的時候,先判斷是否有sessionId被儲存過.如果有,伺服器向這個se...