c++运算符重载中很多人易忘的小细节
運算符重載的基本格式
運算符重載的本質就是函數重載
類型說明符 operator 運算符 (參數列表)
{
函數體;//實現運算符功能的代碼。
}
如果把 operator運算符”看作一個整體,把它看成函數名,上述定義不就是函數的定義嗎?
其中, operator是關鍵字,函數的名字就是用 operator和其后的運算符共同組成的標識符共同組成的標識符。
運算符重載的基本規則
運算符重載時要遵循一定的規則,具體規則如下。
(1)只能重載C語言中已有的運算符,不能虛構新的運算符。
(2)運算符重載后不改變運算符的優先級順序。例如,算術運算符“”和“”的優先級 高于“+”和“”,那么,在類中重載這些運算符后,“興”和“”的優先級仍然高于“+”和 “”。只有括號能改變運算符的運算順序。
(3)運算符重載后不改變運算符的結合性。例如,賦運算符“=”是右結合的,那么運 算符“=”被重載后仍然是右結合的。
(4)運算符重載后不改變操作數的個數。例如,關系運算符“>=”是雙目運算符,那么 “>=”被重載后仍然是雙目運算符;而“+”既可以是單目運算符,也可以是雙目運算符,那 么“”既可以被重載為單目運算符,也可以被重載為雙目運算符。
(5)運算符重載后不改變運算符原有的語義。例如,雙目運算符“+”在算術運算中表示兩數相加,那么“+”重載到類中仍然表示兩個操作數的相加。如果改變了“+”的語義會 顯得莫名其妙,極大地降低程序的可讀性。
(6)運算符重載時操作對象至少應該有一個是自定義的類對象(或類對象的引用),即 不能為基本數據類型重載運算符。
(7)有五個常用運算符不允許被重載。并不是所有運算符都可以重載,以下五個運算 符不允許被重載:成員訪問運算符“”、成員指針運算符“”、域運算符“:”、條件運算符 “?:”和 sizeof運算符。另外,強制類型轉換運算符( static_cast、 const_cast、 dynamiccast和 reinterpret cast)、 alignof和 typeid也不能被重載。
總結
以上是生活随笔為你收集整理的c++运算符重载中很多人易忘的小细节的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++中实现域内,左,右对齐的方法
- 下一篇: c++中运算符重载方式中你易遗漏的小细节