C語言支援函式過載嗎?C 中函式過載有什麼用?

時間 2023-03-10 16:30:07

1樓:皮皮愛運動

不支援,c裡面沒有過載這個概念。因為c不是物件導向的語言。

2樓:匿名使用者

c不支援;c++支援,因而在c++的標頭檔案中有很多因為要和c相容,extern "c"的語句就是避免有些c++中可以過載的函式在c中產生衝突。

c++中函式過載有什麼用?

c++中函式過載有啥用?

3樓:魚尾摯愛白菜

類的建構函式跟類名相同,即建構函式都同名。如果沒有函式過載機制,要想例項化不同的物件非常麻煩。

操作符過載,本質上就是函式過載,它大大豐富了已有操作符的含義,方便使用,例如「+」可用於連線字串等。

過載函式是函式的一種特殊情況,為方便使用,c++允許在同一範圍中宣告幾個功能類似的同名函式,但是這些同名函式的形式引數(指引數的個數、型別或者順序)必須不同,也就是說用同一個運算子完成不同的運算功能。這就是過載函式。過載函式常用來實現功能類似而所處理的資料型別不同的問題。

4樓:匿名使用者

函式過載不能完全替代可變長引數……雖然函式過載可以讓你在同一個**裡寫出print(1,2,'a');和print("a=",12);而不需要寫printf("%d%d%c",1,2,'a')和printf("%s%d","a=",12);,但代價是你需要寫無數個print函式的定義……例如這個例子裡你就要同時寫int print(const int,const int,const char)函式的定義和int print(const char*,const int)函式的定義。

儘管如果函式的引數型別唯一且引數數目在一個很小的範圍內,那麼代價還是可以接受的(畢竟有安全性作為補償),但仍然是一種麻煩的辦法,c++11的變長引數模板給了一種既無需寫無數個函式定義又具有安全性的解決方法……

5樓:祜風

1、函式過載是指在同一作用域內,可以有一組具有相同函式名,不同引數列表的函式,這組函式被稱為過載函式。

2、過載函式通常用來命名一組功能相似的函式,這樣做減少了函式名的數量,避免了名字空間的汙染,對於程式的可讀性有很大的好處。

3、具體優點說來有三點:

(1)、試想如果沒有函式過載機制,如在c中,必須要這樣去做:為這個print函式取不同的名字,如print_int、print_string。這裡還只是兩個的情況,如果是很多個的話,就需要為實現同一個功能的函式取很多個名字,如加入列印long型、char*、各種型別的陣列等等。

這樣做很不友好!

(2)、類的建構函式跟類名相同,也就是說:建構函式都同名。如果沒有函式過載機制,要想例項化不同的物件,那是相當的麻煩!

(3)、操作符過載,本質上就是函式過載,它大大豐富了已有操作符的含義,方便使用,如+可用於連線字串等!

6樓:匿名使用者

以algorithm裡的sort函式為例,default (1)template

void sort (randomaccessiterator first, randomaccessiterator last);

custom (2)template

void sort (randomaccessiterator first, randomaccessiterator last, compare comp);

這是。上的內容,sort有兩種形式,第一種接受兩個迭代器,然後對序列排序,第二種,接受兩個迭代器和一個自定義的比較函式來告訴sort該怎麼樣進行排序。

你可以看到,兩種形式的差別在與第二種形式多了一個引數,為了實現這種函式,1.要麼使用變參函式,寫一個sort(iter,iter, .來將第三個引數作為變參。

2.要麼使用函式過載函式,寫兩個引數不同的sort函式。

3.要麼只寫三個引數的形式,然後給第三個引數一個預設值。

這三種方法都可以實現函式名相同,引數不同的函式。你可以在標準庫裡看到許多過載的函式,使用相同的函式名錶示我在做同一件事,而接受引數不同,可以用於不同的情況。相比於使用變參而言,第二種和第三種技術會更簡單,更方便。

c++裡什麼樣的函式不能過載

cóïñô¿é²»¿éòôöøôø£¿

c++中函式過載有什麼用?

c++中函式過載是什麼,能舉個例子說明是如何過載的嗎

7樓:blue丶小

函式過載:

c++允許定bai義多個du同名函式,但zhi是引數不能相同,dao必須滿足以下條件之一版。

1,引數型別不同權。

2,引數數量不同 比如:

int fun(int,int);

int fun(long,int); 型別不同。

int fun(int); 數量不同。

這樣三個函式實現了過載,編譯器會認為是三個不同的函式ps:返回值型別不同,引數相同,是不能過載的。

8樓:匿名使用者

實際上就是兩個函式,引數不同名字相同 編譯器根據引數把它們區分開,實際上最後它們的名字還是不一樣的。

9樓:重新整理

就是相同作用域,相同函式名,不同的引數!根據引數來呼叫對心的函式。

c++過載函式習題

10樓:匿名使用者

你的問題裡,說輸出一個int值,和輸出一個字元,我且當理解成 函式show 返回一個int 型別的值,或者返回一個字元型別的值。

正如你題中所問, 2個過載要分別對四種變數 int, float, char, 和short 進行測試。 這就是說,每一個過載函式你都要測試這四種輸入型別的值, 再根據你過載的返回值是什麼來返回資料。 這就需要你一共寫8個過載方程:

第1個過載函式, 返回型別: int,輸入型別: int;

第2個過載函式, 返回型別: int,輸入型別: float;

第3個過載函式, 返回型別: int,輸入型別: char;

第4個過載函式, 返回型別: int,輸入型別: short;

第5個過載函式, 返回型別: char,輸入型別: int;

第6個過載函式, 返回型別: char,輸入型別: float;

第7個過載函式, 返回型別: char,輸入型別: char;

第8個過載函式, 返回型別: char,輸入型別: short;

c 函式過載函式,C 函式過載函式

用模板做確實 更精簡,這是詳細的程式都給你寫出來了,費了很長時間,樓主給力啊!呵呵 include iostream include stdio.h using namespace std define m 10 定義要排序的陣列個數,根據需要修改 三個過載函式宣告 void menu void s...

c語言中既然不支援函式過載那麼printf算怎麼回

printf 是可變引數傳遞,不是過載。 樓上說的不錯,printf只是函式呼叫而已 這個問題問的不錯。其實printf不是過載,c語言不支援函式過載 這句話是對的。printf函式是通過變長參數列實現的。你可以檢視一下printf的函式原型宣告。printf函式的實現在不同的機器上是不同的,但提供...

c語言數學函式,C語言數學函式

萇賓 abs 計算整型數的絕對值 相關函式 labs,fabs 表標頭檔案 include 定義函式 int abs int j 函式說明 abs 用來計算引數j的絕對值,然後將結果返回。返回值 返回引數j的絕對值結果。範例 ingclude main 執行 12 12 exp 計算指數 相關函式 ...