c Primer,十四,過載操作符與轉換

2021-06-29 08:16:59 字數 856 閱讀 6826

第十四章 過載操作符與轉換

c++ 定義了許多內建型別間的操作符和自動轉換。像+,-,*,/等,使用這些很簡單自然,另外在沒學習類之前,貌似我們沒有什麼必要去重新定義乙個+的操作,因為他們已經很好的工作了,在有了類型別之後,我們可能會希望我定義的兩個類物件可以像內建型別那樣實現+操作,完成兩個類物件的相加。

過載操作符是具有特殊名稱的函式:保留字 operator 後接需定義的操作符號。像任意其他函式一樣,過載操作符具有返回型別和形參表,如下語句:

sales_item operator+(const sales_item&, const sales_item&);

用於內建型別的操作符,其含義不能改變。例如,內建的整型加號操作符不能重定義。過載操作符必須具有至少乙個類型別或列舉型別的運算元。這條規則強制過載操作符不能重新定義用於內建型別物件的操作符的含義。

大多數過載操作符可以定義為普通非成員函式或類的成員函式。作為類成員的過載函式,其形參看起來比運算元數目少 1。作為成員函式的操作符有乙個隱含的 this 形參,限定為第乙個運算元。過載一元操作符如果作為成員函式就沒有(顯式)形參,如果作為非成員函式就有乙個形參。一些有用的規則:賦值(=)、下標()、呼叫(())和成員訪問箭頭(->)等操作符必須定義為成員,將這些操作符定義為非成員函式將在編譯時標記為錯誤。改變物件狀態或與給定型別緊密聯絡的其他一些操作符,如自增、自減和解引用,通常就定義為類成員。對稱的操作符,如算術操作符、相等操作符、關係操作符和位操作符,最好定義為普通非成員函式。

本章然後就開始介紹:輸入和輸出操作符,算術操作法和關係操作符,賦值操作法,下標操作符。成員訪問符,自增自減操作符,呼叫操作符(這裡引出函式物件)等等操作符的過載使用。另外介紹了轉換與類型別,這些知識,沒有細看,如果想深究或者潛心c++,今後倒是值得一看。

過載 操作符 c primer

istream operator istream in,sales item s double price in s.isbn s.units sold price check that the inputs succeeded if in s.revenue s.units sold price ...

C Primer 過載操作符與轉換

1.不能通過連線其他合法符號來建立任何新的操作符,例如試圖定義乙個operator 操作符以提供求冪操作是非法的 用於內建型別的操作符其含義不能改變,例如 int operator int,int 就是非法的 也不能為任何內建型別定義額外的新的操作符,例如不能定義接受兩個陣列型別運算元的operat...

C Primer 第十四章 過載操作符與轉換

14.1 過載操作符的定義 操作符 可以被內建型別使用,比如兩個整數相加或相減,兩個字串相加,兩個陣列比較大小等等。自定義類預設是不能使用大多數操作符的。自定義類是復合型別,相加或想減或比較大小並沒有相應的規則匹配 兩個類相加等於什麼?兩個類如何確定誰大誰小?c 允許我們通過過載運算子的技術讓自定義...