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