函式過載的作用,什麼叫函式過載

時間 2021-12-28 21:42:06

1樓:

方法過載的主要好處就是,不用為了對不同的引數型別或引數個數,而寫多個函式。多個函式用同乙個名字,但參數列,即引數的個數或(和)資料型別可以不同,呼叫的時候,雖然方法名字相同,但根據參數列可以自動呼叫對應的函式。如果我們使用reflector去檢視微軟寫的.

net的基類庫的話,我們可以發現他使用很多的方法過載,這樣我們在呼叫的時候,就不需要記那麼多的方法名稱,而是知道了方法的功能就可以直接的給他傳遞不同的引數,編譯器會明確的知道我們呼叫了哪乙個方法。

2樓:匿名使用者

寫出來的東西是給別人用的,這樣做i/o可以更加方便

3樓:韌勁

函式過載是指在同一作用域內,可以有一組具有相同函式名,不同引數列表的函式,這組函式被稱為過載函式。過載函式通常用來命名一組功能相似的函式,這樣做減少了函式名的數量,避免了名字空間的汙染,對於程式的可讀性有很大的好處。

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

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

不用為了對不同的引數型別或引數個數,而寫多個函式。多個函式用同乙個名字,但參數列,即引數的個數或(和)資料型別可以不同,呼叫的時候,雖然方法名字相同,但根據參數列可以自動呼叫對應的函式。如果我們使用reflector去檢視微軟寫的.

net的基類庫的話,我們可以發現他使用很多的方法過載,這樣我們在呼叫的時候,就不需要記那麼多的方法名稱,而是知道了方法的功能就可以直接的給他傳遞不同的引數,編譯器會明確的知道我們呼叫了哪乙個方法。操作符過載,本質上就是函式過載,它大大豐富了已有操作符的含義,方便使用,如+可用於連線字串等!

4樓:匿名使用者

多型知道不,這樣可以使程式的結構更清楚,可以用多種實現去實現同一介面,可以在執行時根據需要作不同的實現。。

什麼叫函式過載

5樓:憶安顏

函式過載是乙個同名函式完成不同的功能,編譯系統在編譯階段通過函式引數個數、引數型別不同,函式的返回值來區分該呼叫哪乙個函式,即實現的是靜態的多型性。但是記住:不能僅僅通過函式返回值不同來實現函式過載。

過載函式的多義性無法確定,直到遇到函式呼叫。 此時,將為函式呼叫中的每個引數生成集,並且可以確定是否存在明確的過載。 這意味著,多義性可保持在您的**中,直到它們由特定函式呼叫引發。

引數型別差異

過載函式區分使用不同的初始值設定項的引數型別。 因此,對於過載而言,給定型別的引數和對該型別的引用將視為相同。 由於它們採用相同的初始值設定項,因此它們被視為是相同的。

例如,max( double, double ) 被視為與 max( double &, double & ) 相同。 宣告兩個此類函式會導致錯誤。

出於同一原因,對由 const 或 volatile 修改的型別的函式引數(出於過載的目的)的處理方式與基類沒有什麼不同。

但是,函式過載機制可以區分由 const 和 volatile 限定的引用和對基型別的引用。

6樓:**座美妝達人

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

這就是過載函式。

過載函式常用來實現功能類似而所處理的資料型別不同的問題。

但是過載函式的返回值型別可以不同。

7樓:如花和里森

麻煩?看來你不懂過載,過載是為了減少麻煩才產生的。

打個比方,你為了要計算兩個數的和,寫了乙個函式,如下:

int intsum(int na,int nb)

這個只是計算了兩個整形的和,或許你還要寫乙個計算浮點數和的函式:

float floatsum(float fa,float fb)

或許你還需要計算乙個浮點數和乙個整形的和,還需要乙個函式:

float float_intsum(float fa,int nb)

甚至,如果你用c++的話,你還會需要一些計算物件之間的和,等等。。。。

當寫了這麼多的函式,在實際運用中根據需要選擇不同的函式來計算某些型別的和,我想你也記不住這麼多函式。用過載吧,只需要記住乙個函式名就行了。

//函式fun_sum的過載

int fun_sum(int a,int b)

float fun_sum(float a,float b)

double fun_sum(double a,double b)

uint fun_sum(uint a,uint b)

//等等,可以的話這種過載寫數十個也不會重複。

//好了,以後你想要計算某兩個型別的和時(可以是不同型別),不需要去想該用哪個計算和的函式,統統呼叫函式fun_sum就行了,至於到底是其中的哪乙個函式在被呼叫,讓編譯器去傷腦筋吧。

8樓:匿名使用者

int max (int,int);

//返回兩個整數的最大值;

int max (const vector &);

//返回vector容器中的最大值;

int max (const matrix &);

//返回matrix引用的最大值;

9樓:匿名使用者

void fun(int x);

void fun(float x);

void fun(float x,int y);

這就是函式過載,引數不一樣,但是函式名一樣,但是不能返回值不一樣~

10樓:七巧板的哲學

同乙個函式名,但引數不一樣,系統會根據你輸入的引數型別或者引數的個數來判斷要點用的函式!

j**a語言中方法的過載的作用是什麼?

11樓:匿名使用者

根據方法的引數不同,當你要實現某個功能的時候,你就可以呼叫相應的方法,去實現不同的功能,是為了減少**,你也可以不這樣寫

12樓:臨懷

方法過載的目的:為了讓方法名相同而形參不同的方法同時存在

13樓:匿名使用者

根據引數或返回值的不同,呼叫相應方法,實現不同的功能

14樓:

方法的過載是實現多型的一種方式

j**a中過載的作用是什麼?

15樓:福微瀾紹知

舉個例子,你是乙個鑄鍋匠,專門管鑄鍋,你會鑄鐵鍋,也會鑄鋁鍋。但是無論是鑄鐵鍋還是鋁鍋,都用的是乙個鑄鍋的方法(方法),鑄出來的也都是鍋(返回值),所不同的就是用的原料(傳入引數)不一樣,客戶拿來了鐵,你就得鑄鐵鍋,客戶拿來了鋁,你就鑄鋁鍋,客戶啥也沒拿,那好吧,你就呼叫預設方法給他鑄口空氣鍋。

說明:返回值可以相同可以不同,因為決定呼叫哪個方法的因素僅僅是傳入引數的型別而不是返回值的型別

guozhuguo()

guozhuguo(tie

t)guo

zhuguo(lv

lv)該明白了吧

16樓:路路通

說明:返回值可以相同可以不

同,因為決定呼叫哪個方法的因素僅僅是傳入引數的型別而不是返回值的型別guo zhuguo()

guo zhuguo(tie t)

guo zhuguo(lv lv)

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

17樓:魚尾摯愛白菜

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

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

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

18樓:匿名使用者

函式過載不能完全替代可變長引數……雖然函式過載可以讓你在同乙個**裡寫出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的變長引數模板給了一種既無需寫無數個函式定義又具有安全性的解決方法……

19樓:匿名使用者

過載是是c++的機制,是指具有同名但具有不同簽名(返回型別和引數)的一組函式可以同時存在,有編譯器在編譯時自動匹配合適函式的機制。而c不允許存在同名函式,如果需要同名但不同引數的呼叫,只能採用變參技術。

原因:c++ 編譯時,會根據函式名、返回值、引數給函式 重新取名為,有不用函式名稱、函式簽名的函式會有不同的不同的函式名稱,因此編譯時可以根據 這些要素找到匹配的呼叫函式;

而c, 在編譯時,只根據函式名稱找匹配的函式,因此不允許存在兩個同名函式。

作用:主要作用為,對外提供類似功能的統一介面。

如:開啟檔案,開啟電源,開啟窗戶等都是開啟動作,在c中我們必須提供 openfile()、openpower()、openwindow() 等一系列不同名稱的函式,這對外部呼叫帶來很多困難,因為我們必須記住所有的開啟函式名稱。但c++中我們只提供open(tfile& file),open(tpower& power), open(twindow& window)即可,呼叫者只需要記住有open()函式即可。

這回大大可以程式可讀性和開發效率。

20樓:祜風

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

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

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

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

這樣做很不友好!

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

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

什麼是律師函,律師函的作用律師函的法律作用

律師函 lawyer s letter 引是指律師接受客戶的委託就有關事實或法律問題進行披露 評價,進而提出要求以達到一定效果而製作 傳送的專業法律文書。律師用律師函對某一事實進行法律評價和風險估計,其目的在於以法律尺度和律師的判斷,對送達物件曉之以法律事實,動之以利弊得失,讓送達物件得出自己的 法...

C 函式過載的例題為什麼出錯了!!急急急急

因為類名string和型別string的名字重了改一下類名,首字母大寫就可以 include iostream include string.h using namespace std class string int getlen void print private char sptr int ...

c建構函式的定義是什麼 在函式中有什麼作用

蝸牛優選推薦 建構函式是在建立給定型別的物件時執行的類方法。建構函式具有與類相同的名稱,它通常初始化新物件的資料成員。在下面的示例中,定義了乙個具有乙個簡單的建構函式,名為 taxi 的類。然後使用 new 運算子來例項化該類。在為新物件分配記憶體之後,new 運算子立即呼叫 taxi 建構函式。p...

C 建構函式的任務是什麼,在c 類中,定義建構函式的目的是什麼

建構函式通常用於在例項化物件時自動對內部資料成員初始化,設定初始值 分配記憶體空間等。而析構函式則用於刪除物件時做收尾工作,比如釋放申請的空間等。要建立乙個物件,就得呼叫建構函式。要銷毀乙個物件,就會被迫的呼叫析構函式。如果成員函式宣告稱static,不建立物件也能呼叫 靜態成員函式。根據你的需要來...

什麼叫信心及信心的作用

信心是指對行為成功及其相應事物的發展演化猶如預盼的信任程度。信心表現為對實現行為任務目標成敗的外在感知 情緒反應 外在意識。信心以對行為的心理作用效能程度從低到高可分為自我效能感 集體效能感 行為業績感三個層次。作用 1 自信是成功的基礎。自信是建立在正確認識自己的基礎上的,它促使人們從情感 意識 ...