C裡什麼是運算子過載?在什麼情況下用

2021-05-22 05:40:03 字數 2972 閱讀 3040

1樓:匿名使用者

運算子過載 operator 關鍵字,比如你有一個class a;

a a;

a b;

a = b;

如果在你的class a中沒有定義 operator = 建構函式,a = b 就會出錯;

同理,也可以過載 operator 、operator <、operator >等函式,為的就是實現 a、ab等自定義型別操作

2樓:

運算子過載就是編譯器不

知道運算規則,由你來制定規則 比如結構體point 你直接用兩個結構體相加,編譯器就不知道怎麼加,所以要你過載+號,告訴編譯器運算規則,實現兩個結構體間的運算

不同資料型別之間的運算,還有複合資料型別參與的運算都要運算子過載

3樓:匿名使用者

簡單的說就是重新定義運算子的動作。比如可以定義+運算子的動作為連線字串,日期+1,虛數相加,矩陣相加等等。

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樓:北大青鳥

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

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

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

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

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

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

9樓:匿名使用者

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

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

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

10樓:匿名使用者

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

c++中為什麼要用輸入輸出運算子過載,有什麼作用?。。。。急用。。。新手不懂!

11樓:救世大英雄啊

比如<<,在平時他是輸出普通變數等,如int a=10;cout<類的物件,如class people{};

people p();

你想直接用cout<

12樓:匿名使用者

簡單解釋一下,a、b為整型,那麼可以直接a+b,如果a、b是類student的物件呢?a+b表示什麼?過載運算子最大的用處就是可以用於兩個物件或者物件與常規型物件之間,a+b你可以過載'+'為類student的分數相加,或者其他(年齡、錢數...

),明白?

13樓:匿名使用者

過載運算子主要是為了。。。比如 沒有 string型別 在c裡面你想要 讓 char * p1 = "123" char *p2 = "456" p1 + p2 。。。這種結果無法預知的,但是你通過string 類過載 + 運算子 你可以 string p1 string p2 .............

p1 + p2 這種就是正確的了。主要方便運算操作

什麼情況下使用移位運算子,關於移位運算子的問題

各種編碼,編碼間的轉換時都會用到。無論是字元編碼,比如 通常用在底層開發裡面,當然在應用中也可以使用例如一個數 2 可寫為 數 1,移位操作效率更高然如果一個數 2 定為 數 1,但如 2 的n次方,則可 數 n 當然還有很多作用,可在網上搜尋一些例子看 位移位運算子 要了解移位運算,需明白二進位制...

C中運算子,C中運算子叫什麼名字

樓上的都錯了,樓主說的是成員指標運算子.而不是 成員指標運算子在指標運算子的基礎上限定了變數的適用範圍是類或結構體的成員變數或成員函式指標 下面有段 就使用了成員指標運算子 include class claa double fx double x void main include int mai...

為什麼C 過載賦值運算子必須要用成員函式而不能用普通或者友元

1 既然是操作符過載,就必然會訪問類的私有成員變數,根據類的封裝性要求,除了友元函式外,其他任何外部操作都是違規的,所以不能用普通函式來過載操作符。2 賦值操作符的過載函式在沒有顯式定義的情況下,編譯程式會自動生成,即使類成員變數包含有指標,也會將指標的值給予複製,所以往往會造成多個例項共享一個儲存...