目錄過載運算子是特殊名字的函式
名字:operator
後面加上需要過載的運算符號
構成:注意點:
不能含有預設實參
第乙個(左側)運算物件繫結到隱式的this,所以顯式的運算物件比實際的運算物件少乙個
至少有乙個類型別物件引數
//錯誤:不能重新定義內建的運算子
通常情況下,我們將運算子作用於型別正確的實參,從而以這種間接方式「呼叫」過載的運算子函式。然而,我們也能像呼叫普通函式一樣直接呼叫運算子函式,先指定函式名字,然後傳入數量正確、型別適當的實參:
//乙個非成員函式的等價呼叫
data1 + data2; //普通的表示式
operator+(data1, data2);//等價的函式呼叫
//乙個成員函式的等價呼叫
data1 += data2; //基於「呼叫」的表示式
data1.operator=(data2); //等價的函式呼叫
通常情況下,不應該過載逗號,取址,邏輯與和邏輯或運算子
詳見c++primer491
當你開始設計乙個類時,首先應該考慮的是這個類將提供哪些操作。在確定類需要哪些操作之後,才能思考到底應該把每個類操作設成普通函式還是過載的運算子。如果某些操作在邏輯上與運算子相關,則它們適合於定義成過載的運算子:
如果具有對稱性的運算子沒有定義成非成員,那麼將不支援型別轉換,左側物件必須是成員函式所在類的型別,失去了對稱性
string s = "world";
string t = s + '!'; //正確:能把char*加到string上
string u = "hi" + s; //如果+是string的成員,會產生錯誤
如果operator+是string的成員,最後一行**等價於
"hi".operator+(s);
顯然是錯誤的。 基本概念 C 基本概念
由於工作中需要用到c 編寫的一些工具,有時候需要根據需求修改或者定製工具,所以現在不得不學習一下c 的基礎語法,此為筆記,不成章法!機器語言 組合語言 高階語言 面向過程的程式設計方法 物件導向的程式設計方法 泛型程式設計方法 1 演算法設計 2 源程式編輯 3 編譯 4 連線 5 執行除錯 輸入裝...
基本概念 數控系統基本概念
第一章 基本概念 數控工具機cnc是一種按事先編制好的加工零件程式進行加工的高效 自動化加工裝置。是 computer numerical control machine tools 的簡稱。數控工具機較好地解決了複雜 精密 小批量 多品種的零件加工問題,是一種柔性的 高效能的自動化工具機。西門子系...
XSLT基本概念
我們首先來澄清乙個概念,大家可能聽說過xsl extensible stylesheet language xsl和我們這裡說的xslt從狹義上理解是一樣的,而按照w3c的標準,xslt的說法更嚴格些,因此我們在文章中統一使用xslt的稱法。它們之間具體的關係我們會在下面講述。1.1 什麼是xslt...