C++ Primer 有感(重载操作符)
1.用于內置類型的操作符,其含義不能改變。也不能為任何內置類型定義額外的新的操作符。(重載操作符必須具有至少一個類類型或枚舉類型的操作數。這條規則強制重載操作符不能重新定義用于內置類型對象的操作符的含義)
2.重載操作符,操作符的優先級、結合性或操作數數目不能改變。注意:重載操作符時使用默認實參是非法的。
3.重載操作符并不保證操作數的求值順序,不再具備短路求值特性。
4.作為類成員的重載函數,其形參看起來比操作數數目少1。作為成員函數的操作符有一個隱含的this形參,限定為第一個操作數。(重載一元操作符如果作為成員函數就沒有(顯式)形參,如果作為非成員函數就有一個形參。類似的,重載二元操作符定義為成員時有一個形參,定義為非成員函數時有兩個形參)
5.重載逗號、取地址、邏輯與、邏輯或等操作符通常不是好做法。這些操作符具有有用的內置含義,如果我們定義了自己的版本,就不能再使用這些內置含義。
6.將要用作關聯容器鍵類型的類定義<操作符。關聯容器默認使用鍵類型的<操作符。即使該類型將只存儲在順序容器中,類通常也應該定義相等(==)操作符和小于(<)操作符,理由是許多算法假定這些操作符存在。如果類定義了相等操作符,它也應該定義不等操作符!=。
7.為類設計存在操作符的時候,是將操作符設置為類成員還是普通黑成員函數。下面是一些指導原則,有助于決定將操作符設置為類成員還是普通黑成員函數:
(1)賦值(=)、下標([ ])、調用( ( ))和成員訪問箭頭(->)等操作符必須定義為成員,將這些操作符定義為非成員函數將在編譯時標記為錯誤。
(2)像賦值一樣,復合賦值操作符通常應定義為類的成員。
(3)改變對象狀態或與給定類型緊密聯系的其他一些操作符,如自增、自減和解引用,通常應定義為類成員。
(4)對稱的操作符,如算術操作符、相等操作符、關系操作符和位操作符,最好定義為普通非成員函數。
8.C++語言不要求自增操作符或自減操作符一定作為類的成員,但是,因為這些操作符改變操作對象的狀態,所以更傾向于將它們作為成員。
9.重載自增操作符或自減操作符的前綴式和后綴式,它們的區別是:后綴式操作符接受一個額外的(即,無用的)int型形參。使用后綴式操作符時,編譯器提供0作為這個形參的實參。
轉載于:https://www.cnblogs.com/wangfengju/p/6173014.html
總結
以上是生活随笔為你收集整理的C++ Primer 有感(重载操作符)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java ioutils_关于Java:
- 下一篇: QTreeWidget的基本操作