-
1 # 猿門射姬
-
2 # zlifes
有很大的生產效率意義。在設計上不是必須的,如果沒有,透過程式碼也可以實現,如兩個類相加,透過程式碼可以把需要相加的成員(通常不會限制公開性)加起來。如果類設計有過載加法,就會效率高很多,直接使用,且不需要太關注類細節,但同樣需要關注類相加的含義說明
-
3 # 談極品tanjp
我覺得不那麼重要吧,運算子過載只是讓程式碼好看一些,不用運算子可以用函式啊。不過作為高階語言,特別對於入門新手就很在乎這些語法。怎麼說呢,對比其他語言,java C#都有這個,C++想要被更多人使用,那也是最好要有吧,多一點競爭力。
-
4 # 程式生人
正常使用運算子過載可以是程式更簡潔,但是濫用之,則困之,濫用會是程式晦澀難懂!
1、從開發的角度而言,運算子過載的存在是為了提高開發效率,增加程式碼的可複用性,很多時候反而是簡化了問題,具體實現被複雜化,但是暴露的介面得到了簡化,使物件之間可以做運算操作的,如+-*/。
2、C++強大的原因之一是支援泛型程式設計。泛型程式設計使得演算法可以獨立於資料型別存在。自定義的資料型別透過運算子過載具有了和內建型別同樣的使用介面,然後C++的模板加持下,你的演算法可以利用這種介面一致性,實現泛化,實現演算法的通用化。
3、除了提高寫程式碼的效率,也往往降低了程式碼維護的成本,更容易減少bug,提高程式碼質量,實現低耦合。
01 運算子過載的需求
C++ 預定義的運算子,只能用於基本資料型別的運算:整型、實型、字元型、邏輯型等等,且不能用於物件的運算。但是我們有時候又很需要在物件之間能用運算子,那麼這時我們就要過載運算子,使得運算子能用於物件之間的運算。
比如,在數學上,兩個複數可以直接進行+、-等運算,但在C++中,直接將+或-用於複數物件是不允許的。有時會希望,讓物件也能透過運算子進行運算。這樣程式碼就更簡潔,也容易理解。
02 運算子過載的形式
運算子過載的實質就是函式過載,可以過載為普通函式,也可以過載為成員函式。運算子過載的基本形式如下:
返回值型別 operator 運算子(形參表)
{
...
}
03可過載運算子/不可過載運算子
1、下面是可過載的運算子列表:
雙目算術運算子 + (加),-(減),*(乘),/(除),% (取模)
關係運算符 ==(等於),!= (不等於),< (小於),> (大於>,<=(小於等於),>=(大於等於)
邏輯運算子 ||(邏輯或),&&(邏輯與),!(邏輯非)
單目運算子 + (正),-(負),*(指標),&(取地址)
自增自減運算子 ++(自增),--(自減)
位運算子 | (按位或),& (按位與),~(按位取反),^(按位異或),,<< (左移),>>(右移)
賦值運算子 =, +=, -=, *=, /= , % = , &=, |=, ^=, <<=, >>=
空間申請與釋放 new, delete, new[ ] , delete[]
其他運算子 ()(函式呼叫),->(成員訪問),,(逗號),[](下標)
2、下面是不可過載的運算子列表:
• .:成員訪問運算子
• .*, ->*:成員指標訪問運算子
• :::域運算子
• sizeof:長度運算子
• ?::條件運算子
• #: 預處理符號
回覆列表
意義比較大,它是為了讓程式碼封裝行和易用性的一種保障
舉個簡單例子,如何把一個物件用cout列印到控制檯?如果沒有過載運算子,會很麻煩