1樓:憶安顏
函式過載是一個同名函式完成不同的功能,編譯系統在編譯階段通過函式引數個數、引數型別不同,函式的返回值來區分該呼叫哪一個函式,即實現的是靜態的多型性。但是記住:不能僅僅通過函式返回值不同來實現函式過載。
過載函式的多義性無法確定,直到遇到函式呼叫。 此時,將為函式呼叫中的每個引數生成集,並且可以確定是否存在明確的過載。 這意味著,多義性可保持在您的**中,直到它們由特定函式呼叫引發。
引數型別差異
過載函式區分使用不同的初始值設定項的引數型別。 因此,對於過載而言,給定型別的引數和對該型別的引用將視為相同。 由於它們採用相同的初始值設定項,因此它們被視為是相同的。
例如,max( double, double ) 被視為與 max( double &, double & ) 相同。 宣告兩個此類函式會導致錯誤。
出於同一原因,對由 const 或 volatile 修改的型別的函式引數(出於過載的目的)的處理方式與基類沒有什麼不同。
但是,函式過載機制可以區分由 const 和 volatile 限定的引用和對基型別的引用。
2樓:**座美妝達人
過載函式是函式的一種特殊情況,為方便使用,c++允許在同一範圍中宣告幾個功能類似的同名函式,但是這些同名函式的形式引數(指引數的個數、型別或者順序)必須不同,也就是說用同一個運算子完成不同的運算功能。
這就是過載函式。
過載函式常用來實現功能類似而所處理的資料型別不同的問題。
但是過載函式的返回值型別可以不同。
3樓:如花和裡森
麻煩?看來你不懂過載,過載是為了減少麻煩才產生的。
打個比方,你為了要計算兩個數的和,寫了一個函式,如下:
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就行了,至於到底是其中的哪一個函式在被呼叫,讓編譯器去傷腦筋吧。
4樓:匿名使用者
int max (int,int);
//返回兩個整數的最大值;
int max (const vector &);
//返回vector容器中的最大值;
int max (const matrix &);
//返回matrix引用的最大值;
5樓:匿名使用者
void fun(int x);
void fun(float x);
void fun(float x,int y);
這就是函式過載,引數不一樣,但是函式名一樣,但是不能返回值不一樣~
6樓:七巧板的哲學
同一個函式名,但引數不一樣,系統會根據你輸入的引數型別或者引數的個數來判斷要點用的函式!
過載一個函式的條件是什麼?
7樓:椴
過載函式是函式的一種特殊情況,為方便使用,c++允許在同一範圍中宣告幾個功能類似的同名函式,但是這些同名函式的形式引數(指引數的個數、型別或者順序)必須不同,也就是說用同一個運算子完成不同的運算功能。這就是過載函式。過載函式常用來實現功能類似而所處理的資料型別不同的問題。
條件如下
兩個過載函式必須在下列一個或兩個方面有所區別:
1、函式有不同引數。
2、函式有不同引數型別,
c++的這種程式設計機制給程式設計者極大的方便,不需要為功能相似、引數不同的函式選用不同的函式名,也增強了程式的可讀性。
c++運算子過載的相關規定如下:
(1)不能改變運算子的優先順序;
(2)不能改變運算子的結合型;
(3)預設引數不能和過載的運算子一起使用;
(4)不能改變運算子的運算元的個數;
(5)不能建立新的運算子,只有已有運算子可以被過載;
(6)運算子作用於c++內部提供的資料型別時,原來含義保持不變。
希望可以幫到你,謝謝,望採納。
8樓:最涼不過人心
1在同一個類中;
2方法名相同;
3引數列表不同(包括引數的個數不同,引數的型別不同)。
注:返回值可以相同也可以不相同
9樓:匿名使用者
函式過載:是指允許存在多個同名函式,而這些函式的參數列不同(或許引數個數不同,或許引數型別不同,或者兩者都不相同),函式過載是發生在同一個類中。呼叫時,根據引數的不同進行呼叫。
同時編譯器在編譯期間就確定了要呼叫的函式,或者說這是一種早期繫結。同時,函式過載與多型無關。
我是從“上海全鼎軟體學院”畢業的————————
10樓:丿baby情義灬剛
引數的個數、引數型別或引數順序3者中至少有一種不同函式的返回值型別可以相同也可以不同。
11樓:匿名使用者
引數個數,型別,返回值不能和同名的完全一樣
c++中函式過載的原則是什麼啊?
12樓:百度使用者
函式過載的定義:
函式過載是指在同一作用域內,可以有一組具有相同函式名,不同引數列表的函式,這組函式被稱為過載函式。、
所以原則就是相同的函式名,不同的引數列表。返回值不能作為過載依據。
13樓:
函式名相同,形參型別或形引數目不同,這是最基本的要求。
什麼是j**a方法過載
14樓:開心變變變
首先給lz一個例子先吧
class chongzai
如上就是一個過載了 而過載要滿足一下條件:
1.必須是同一個類
2.方法名(也可以叫函式)一樣
3.引數型別不一樣或引數數量不一樣
同時我也給lz講一下過載的作用吧 還是以上面的例子說吧
chongzai cz =new chongzai();
cz.a(1); //呼叫a(int a);
cz.a("傳的引數"); //呼叫a(string a)
cz.a(1,2); //呼叫a(int a,int b)
上面已經說了呼叫哪個方法了 而這個呼叫方法是程式按照你輸入的引數來判斷呼叫哪個方法的
過載的功能也講下吧 就比如說你做遊戲 那麼可能遊戲可以有多個人完 而完的人數又不確定是幾個人 那麼就可以用到過載了
15樓:邗啟
過載就是
在同一個類中
方法名字一樣,引數列表不一樣
對返回型別和訪問許可權沒有嚴格要求的方法
16樓:
同一個類 函式名一樣 引數名/引數個數/引數順序不一樣
17樓:
在同一個類中
方法名字一樣,引數列表不一樣
在c#,什麼叫做方法過載,怎樣實現方法過載,
18樓:匿名使用者
過載是指方法
名稱相同, 只是引數個數或型別不同. 方法功能是相同的.
除了過載, 還要了內
解以下幾個關鍵字的容用法,與區別:
virtual 定義為虛方法
override 對虛方法實現,具有多型性new 把基類中的同名方法替換掉, 不具有多型性//舉個例子
//不使用方法過載
public string getstring(string strvalues)
return "hello,"+strvalues+"兄";
}//使用過載就是
public string getstring()public string getstring(string strvalues)
19樓:ǒ蒍禰變乖
using system;
public class test
public test(string name)public test(string name,string ***)
public static void main()}方法過載一般是用於源構造方法中
方法名相同
引數、型別個數不同
與返回值無關
20樓:匿名使用者
public string king()
public king(string str)
簡單 易懂
過載函式時通過什麼來區分,c 中呼叫被過載函式時,通過什麼來區分被呼叫的是哪個函式
通過引數的個數和型別來區分 c 中呼叫被過載函式時,通過什麼來區分被呼叫的是哪個函式? 你猜我猜哇擦猜 你看看過載函式是這麼定義的 函式名同,引數不同,所以當乙個物件呼叫過載函式時,只要看引數就可以了。呼叫的永遠是引數相同的函式 希望你能採納 扈懷煒 通過引數的型別或引數的個數來區分到底呼叫的那個函...
關於C 子類建構函式的過載問題
因為你的基類student裡定義了建構函式,基類的預設建構函式不能呼叫。繼承類裡也就不可能使用預設建構函式了。把你基類裡的建構函式改為有預設值的建構函式,就能解決你的問題。如下 include stdafx.h include include using namespace std class st...
C 的函式是怎麼使用的,好像是比函式過載好一些
兩種用途不一樣.模板可應用於,多型別相容,使用相同功能,編譯器自動.函式過載,多用於功能差異,例如引數數量不一致,內部執行不同行為.例如加法函式 模板用途,可套用不同型別的變數,進行一樣的加法功能.a b c,型別可變int long float都可支援,程式原始碼沿用不變 過載,可用於不同引數數量...