C 中,如果想設計函式,但是在此函式裡又希望對不同的資料型別有不同的處理,請問這個時候應

2021-04-22 03:03:06 字數 1694 閱讀 3750

1樓:囚籠山人六

如果函式的引數的 個數,型別 不同。那就可以用同一個函式名,只是引數不同,寫出多個同名函式分別處理不同問題,這就是函式的過載

c++中函式模板和模板函式的區別

2樓:116貝貝愛

模板函式可以進行隱式的資料型別轉換,中函式模板不會進行自動型別轉換。

一、函內數模版和同名普通函容數在同一個作用域中,會優先呼叫哪個函式,具體如下:

1.函式模型在進行呼叫的時候會進行嚴格的型別匹配,而普通函式在呼叫的時候,會進行函式引數型別轉換(前提是自動型別轉換)。

2.呼叫函式模版,本質是型別引數化,將要嚴格的按照型別進行匹配,不會進行自動型別轉換

3.呼叫普通函式,可以進行隱式的資料型別轉換(前提是可以進行自動型別轉換),這是普通函式和模版函式的本質區別。

二、函式模版可以像普通函式被過載

1.c++編譯器優先考慮普通函式:這是因為普通函式已經存在了,而模版函式還需要進一步的判斷,如果函式模版產生一個更好的匹配,那麼優先選擇函式模版。

2.可以通過空模版實參列表的語法限制編譯器只呼叫模版函式(也就是在引數名之後加上<>,隱含了自動型別推斷!),c++編譯器是如何支援模版機制的。

3樓:棒棒的

如果一個程式來中需要使用多自

種資料型別的比較,則下面思路合理的是()

定義多個不同

函式名的比較函式,完成不同型別的比較

b定義多個同名過載函式完成不同型別的比較

c定義一個比較函式模板完成對不同型別資料的比較d以上思路均不合理

函式模板可以用 不同個數 的引數過載 舉個例子唄

4樓:顛覆天下巨蟹

應該沒有實質性的區別吧,底層的實現原理應該是一致的,不過類過載之後類中的成內員函式和資料成員都容可以用類中的模版了!

類過載:

templetlt;class t;(此處可以有多個型別包括類型別,templet(class t,link h))

class array;

t arr[size];

public:

t operater (int i)

};int main()

for(int i=0;ilt;20;i++)coutlt;lt;hh[i]lt;lt;endllt;lt;dd[i]lt;lt;endl;

system(;pause;);

return 0;}}

c++中的模板到底是什麼意思?不要說任何型別的資料都可以呼叫此函式,沒有型別限制,這個不確切?

5樓:匿名使用者

c++中的模板有函式模板和類别範本兩種:

函式模板是一種通過 型別引數 來產生函式的機制。這是一種**重用機制。有了函式模板,對於那些操作相同,但操作物件型別不同的函式,就不必一個一個過載了,只需定義一個函式模板即可。

類别範本也類似,是一種通過 型別引數 來產生類的機制。有了類别範本,對這些操作完全相同,只是資料成員的型別不同的類,就無需逐個定義了。

6樓:匿名_熱心網友

直接 在 main下面 寫2個函式啊;

int main()

函式要是有返回值和引數你還得定義變數

函式的實現在main之外啊

記得要宣告啊

c純虛擬函式,C 中純虛擬函式有什麼作用

純虛擬函式就是抽象類函式。宣告是virtual void fn 0 沒有實現體的函式。補充一點,含有純虛擬函式的類是抽象類 純虛擬函式是一種特du殊的虛函zhi數,它的一般格式dao如下 專class 類名 屬 在許多情況下,在基類中不能對虛擬函式給出有意義有實現,而把它說明為純虛擬函式,它的實現留...

c 中如果定義了帶引數的建構函式,那麼在定義物件時,必須初始化嗎

是這樣的。你定義了建構函式,系統就不會用預設的建構函式了。中你定義了自己的帶參建構函式,所以系統的預設建構函式就在編譯時,不會生成了。這個就需要自己定義了。否則的話,date a 這樣使用的時候就會報錯。定義物件的時候它會呼叫相應的建構函式初始化自己。如果沒有引數就呼叫不帶引數的建構函式。如果一個類...

Matlab中的m函式,S函式,C函式都有什麼區別,分別用在什麼地方

matlab中應用最多bai的是m函式,無論是 du基本計算功zhi能還是圖形顯示等dao,大多數 版m函式能看到源代權碼,個別m函式僅僅是一個封裝,看不到 還有一種p函式是加密的,保護智慧財產權吧。s函式用在 中,必須按照一定的規則來寫,這部分可能和你具體實現有關,matlab不可能替你寫,所以你...