c中運算子過載到底有什麼何意義,C中運算子過載到底有什麼何意義

2021-03-04 09:31:34 字數 3665 閱讀 8628

1樓:匿名使用者

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

2樓:匿名使用者

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

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

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

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

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

3樓:湛藍水晶

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

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

//...

//初始化a、b的語句

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

c = a.add(b);

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

4樓:匿名使用者

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

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

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

c++中運算子過載到底有什麼好處,可以舉例說明嗎?

5樓:匿名使用者

就我的理解

那些運算子本身功能是有限的

比如不能進行復數的加減

但是我們過載以後

就可以讓它實數與實數相加,虛數與虛數相加,最後結果也是複數還有字串string裡也有很多過載的地方,像兩個字串也可以相加,等等

過載的主要目的是,簡潔易懂,原理上其實也是通過函式實現的,像a + b用add(a,b) 也行,但是看起來要就沒那麼直觀了。

6樓:匿名使用者

舉例:class point

const point operate+(const point& p1, const point& p2)

void main()

明白了嗎?如果沒有操作符過載,你是不能做p = p1+p2;這個操作的。操作符過載使你可以自己定製操作符的運算方式

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

7樓:救世大英雄啊

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

people p();

你想直接用cout<

8樓:匿名使用者

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

),明白?

9樓:匿名使用者

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

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

c++中的運算子過載一般用在什麼地方,以及有什麼用處?

10樓:匿名使用者

運算子過載一般用在類的實現中。

比如,定義了一個類

class myclass

{};然後定義了兩個物件:

myclass item1, item2;

你可能需要進行兩個物件相加的運算。

item1 + item2

但是,系統內部本身是不支援這種操作的,此時,你就需要過載 + 運算子,實現兩個物件相加。

其他的運算子也大同小異。

11樓:匿名使用者

過載運算子只是在讓大家明白過載的思想,剛剛開始進入程式設計不會遇到過載運算子的例子。除非以後開發大的專案需要用到了運算子的過載。比方說,現在的運算子只能對整形 浮點型 字元型的去操作。

以後咱們想定義一個類的例項讓這個類的物件直接就參與運算 (也就是運算子不再侷限在型別變數上,而是可以實現在類的物件上)

c++中的過載有什麼具體作用

12樓:_鈊_煩_薏亂

過載反映了c++的多型性。

過載當然有用。比如你需要一個求和函式sum();

你給它傳遞的引數是回int a,intb

如果要計算答float呢?如果不能過載那麼你得重新命名一個求和函式。

但是有了過載就不必了。把引數設定成float a,float b即可、

這僅僅是過載的一小部分而已,其他還有運算子的過載。

比如你要求兩個矩陣的和,你得自己寫一個求和函式。但是你也可以過載+運算子。那樣看起來不是更直觀嗎?

13樓:冰落銀城

樓上bai說的很對,過載可以du使工作量降低,不zhi必敲重複的**dao。不過模板

比過載還回要優秀!

運算答符過載其實沒改變什麼,並不影響運算結果,但它給人的感覺更直觀,比如你寫個函式求和,你想在主函式裡吧兩個變數求和你就得呼叫這個函式,吧函式返回值傳回主函式輸出。如果你費點精力寫個運算子過載就變得直觀多了,你可以直接用+連結這兩個變數,從而獲得求和結果!

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

14樓:匿名使用者

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

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

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

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

15樓:匿名使用者

主要用來

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

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

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

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

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

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

但是運算子直觀。

16樓:匿名使用者

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

17樓:匿名使用者

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

C中運算子和《運算子有什麼區別

是左移運算子號,是把運算元看成二進位制數,然後左移指定的位數,生成新的值 而c 標準庫的stream類過載了 運算子,使之成為流的輸出符號 和 賦值運算子 沒有關係 為賦值,從右向左 為整型資料的左移位,為位運算子,至於輸出流的插入符為該運算子在ostream中過載後的結果 a 是返回一個引用,主要...

c中的過載運算子ltlt和gtgt為什麼是只可以為友元函式

如果是過載雙目來操作符 即為類源 的成員函式 就只要設定一個引數作為右側運算量,而左側運算量就是物件本身。而 或 左側運算量是 cin或cout 而不是物件本身,所以不滿足後面一點。就只能申明為友元函式了。如果一定要宣告為成員函式,只能成為如下的形式 ostream operator ostream...

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

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