什麼叫函式過載,c 中函式過載的原則是什麼啊?

時間 2021-09-13 02:42:08

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 建構函式過載的問題?

應該是object 1 10 呼叫 sum int object 2 10.5 呼叫 sum double 因為c 在呼叫函式是會自動識別資料型別,如果你把10改為10.0,也是呼叫sum double 了 主要看你的引數是什麼型別的,如果是整型就呼叫sum int 浮點型的呼叫sum double...

C 函式過載問題

void c double void c double void c double void c const double void c const double void c const double void c double const void c const double void c d...

關於C 子類建構函式的過載問題

因為你的基類student裡定義了建構函式,基類的預設建構函式不能呼叫。繼承類裡也就不可能使用預設建構函式了。把你基類裡的建構函式改為有預設值的建構函式,就能解決你的問題。如下 include stdafx.h include include using namespace std class st...