C運算子過載是什麼意思C中運算子過載到底有什麼何意義?

2021-03-07 06:32:08 字數 4400 閱讀 6145

1樓:北大青鳥

所謂過載,就是重新賦予新的含義。函式過載就是對一個已有的函式賦予新的含義,使之實現新功能,因此,一個函式名就可以用來代表不同功能的函式,也就是」一名多用」。

運算子也可以過載。實際上,我們已經在不知不覺之中使用了運算子過載。例如,大 家都 已習慣於用加法運算子」+」對整數、單精度數和雙精度數進行加法運算,如5+8, 5.

8 +3.67等,其實計算機對整數、單精度數和雙精度數的加法操作過程是很不相同的, 但由於c++已經對運算子」+」進行了過載,所以就能適用於int, float, double型別的運算。

又如」<<「是c++的位運算中的位移運算子(左移),但在輸出操作中又是與流對 象cout 配合使用的流插入運算子,」>>「也是位移運算子(右移),但在輸入操作中又是與流物件 cin 配合使用的流提取運算子。這就是運算子過載(operator overloading)。c++系統對」<<「和」>>「進行了過載,使用者在不同的場合下使用它們時,作用是不同 的。

對」<<「和」>>「的過載處理是放在標頭檔案stream中的。因此,如果要在程式中用」<<「和」>>」作流插入運算子和流提取運算子,必須在本檔案模組中包含標頭檔案stream(當然還應當包括」using namespace std「)。

在c++中不能在程式中直接用運算子」+」對複數進行相加運算。使用者必須自己設法實現複數相加。例如使用者可以通過定義一個專門的函式來實現複數相加。

2樓:匿名使用者

比如+運算在正常情況下只能對基本型別(int 、float等)進行加法

過載之後就可以對複數a+bi進行加法(過載函式要針對複數去寫) 如:(a+bi)+(c+di)=(a+b)+(c+d)i

過載完之後+就可以完成上面功能

3樓:匿名使用者

先去了解什麼是函式過載吧。大概意思就是兩個同名的函式,利用形參的不同來作區分。

c++中 運算子過載 到底有什麼何意義?

4樓:匿名使用者

運算子過載是一種特殊的函式過載。例如int a,b;則求a+b值時,在編譯過程中使用的是函式呼叫:opertor+(a,b).主要作用就是使程式更加簡潔,減少程式設計時間。

5樓:匿名使用者

運算子過載是一種特殊的函式過載。

c++的一大特性就是過載(overload),通過過載可以把功能相似的幾個函式合為一個,使得程式更加簡潔、高效。在c++中不止函式可以過載,運算子也可以過載。

由於一般資料型別間的運算子沒有過載的必要,所以運算子過載主要是物件導向之間的。

在進行物件之間的運算時,程式會呼叫與運算子相對應的函式進行處理,所以運算子過載有兩種方式:成員函式和友元函式。

成員函式的形式比較簡單,就是在類裡面定義了一個與操作符相關的函式。友元函式因為沒有this指標,所以形參會多一個。

6樓:湛藍水晶

的確是一樣的,比如你過載了加號,其實是同樣可以定義add()函式來完成相同的操作。

過載是為了讓運算比較符合人的思維,比如定義一個矩陣類matrixmatrix a, b ,c;

//...

//初始化a、b的語句

c = a+b; //如果沒有過載加號的話,這條就通不過編譯了只是這個+號你同樣可以定義一個add函式來操作,如:

c = a.add(b);

你覺得哪種方法比較直觀?

7樓:匿名使用者

你想想如果兩個時間相加,你用+號行嗎?

你要是把+號過載一下,寫一個你自己的+號運算方法不就可以了。

運算子過載就是自己定義符號

c++中的「過載」是什麼意思?

8樓:凌戰

c++中過載很重要,過載就是一個函式名對應著多個功能不一函式體,比如通過過載operator+,

int operator+(int x , int y )char * operator+(char * x,char *y)a+b呼叫operator+函式;系統判斷a,b型別,如果a,b是整數,a=1,b=2,則a+b=3,當a 為字串」hello"時,b為「world」,則a+b為「hello world」

9樓:貴淑英逢媼

c++中的過載  函式過載:

函式過載就是函式名稱相同,但定義卻不同。函式過載使得程式設計師可以將一系列的函式族定義為一個統一的介面,但是卻可以處理不同型別資料或接受不同個數的引數。這實現了統一介面,不同定義的思想。

流的過載:

c++的流提取運算子》和就插入運算子《是c++類庫提供的輸入

輸出(i/o)操作符。系統與定義了輸入流類istream和輸出流類ostream,cin和cout分別是istream和ostream的物件。

iostream標頭檔案中已經對》和《進行了過載,使得它能用來輸入/輸出標準型別的資料。但如果是自己定義型別,就需要重

載在這兩個運算子,以便它們能輸入/上歲數出該自定義型別。格式如下:

流插入的過載:ostream

&operator<<(ostream

&,自定義類

&);流提取的過載:istream

&operator>>(istream

&,自定義類

&);運算子的過載:

運算子的過載就是對運算子的重新定義,即一個運算子可以用於多種資料型別的運算中。運算子的過載在實際程式設計中使用很普遍,例如,「+」運算子既可以用於整數加,也可以用於浮點加,甚至是字串的連結。格式如下:

type

operator

sign

(引數列表);

10樓:安富貴臺環

過載,是指允許存在多個同名函式,而這些函式的參數列不同(或許引數個數不同,或許引數型別不同,或許兩者都不同)。其實,過載的概念並不屬於「物件導向程式設計」,過載的實現是:編譯器根據函式不同的參數列,對同名函式的名稱做修飾,然後這些同名函式就成了不同的函式(至少對於編譯器來說是這樣的)。

如,有兩個同名函式:function

func(p:integer):integer;和function

func(p:string):integer;。

那麼編譯器做過修飾後的函式名稱可能是這樣的:int_func、str_func。對於這兩個函式的呼叫,在編譯器間就已經確定了,是靜態的(記住:

是靜態)。

11樓:賓秀榮靳甲

c++過載是c語言中的一種函式表現方式,即過載函式。

c++中的運算子過載主要用來做什麼?

12樓:匿名使用者

主要是用來使物件之間可以做運算操作的.

比如,你定義了一個類的物件a而這個物件中有一個資料,又定義了一個b物件也有一個資料,你須要使用a+b來計算這兩個物件中資料的合,就須要運算子過載.

運算子過載不光是可以過載四則運算的.也可以過載 下標運算子,<< >>輸入輸出運算子等等.

運算子過載主要的用途只是為了讓運算子其前後跟後的物件可以直接像物件內的資料一樣運算

13樓:匿名使用者

主要用來

定義類的運算,比如你定義個複數類,

然後就需要定義複數的加減乘除。

一個很簡單的例子,平面中質點速度就是個複數。

定義了速度的加減乘除,還可以定義其他運算,如點積,×積。

然後用這個類的時候,直接用過載的運算子運算,直觀,簡單。

顯然,你可以不用運算子過載,而是直接用函式實現複數的各種運算。

但是運算子直觀。

14樓:匿名使用者

自定義運算子,用來實現符合自己實際的需要。

15樓:匿名使用者

個人理解:就是為了實現不同物件裡面成員的運算

c++運算子過載operator + (const ***plex &c)中的c是什麼意思?是指什麼? 5

16樓:匿名使用者

***plex 是你定義的bai

一個類或者du

結構體的型別zhi

名 c代表這dao個型別的專變數 &c是這個變數的引用***plex &c 的***plex相當於屬int &a 中的int 前者的c相當於後者的a

17樓:王均才

那是形式引數,意思是參與運算的物件。你呼叫這個運算子函式時要有運算元。那個運算元的引用傳給形參 c 然後由這個運算子函式處理。

18樓:匿名使用者

仔細看看實參、bai形參du是怎麼實現傳遞的、以及傳zhi值、傳引用、

dao傳地址、、這是基

內礎、這些課本上都容有、如果這些你自己不去仔細的看一遍並搞明白的話、單純的給你介紹一下此處的c是什麼意思、下次換了其他傳遞方式、怕你還是搞不明白的、加油!

C指標運算子過載

比如這麼定義 template class linkedlist node operator int 前置,返回next節點 inline node getfirstnode 連結串列為空會出錯 private node pfirst 不過以上 有個很大的問題,實際上是不能用的,只是為了說明一下。因...

c運算子過載return this是什麼意思

記住 過載的運算子是一個函式,他只是一個普通的函式,只是他的函式名稱比較特別,比如 a operator a m 假設a是一個類,那麼這個過載的加操作符,其函式名稱就是operator 函式的反回型別是a,引數是a m。因此c 運算子過載反回的是什麼,要根據反回型別來決定的,不是都一味的反回retu...

c中運算子《是幹什麼用的,C中運算子和運算子有什麼區別

在沒有過載的情況下,運算元都是整數時,是位移運算。這個例子中就是將i這個整數表示成的二進位制數左移k個位置,右邊補0。位運算的 就是向左移幾位 你的程式有未定義行為,最好不要用 輸出運算子,相當於printf c 中 運算子和 運算子有什麼區別 是左移運算子號,是把運算元看成二進位制數,然後左移指定...