3 回答

TA貢獻(xiàn)1772條經(jīng)驗 獲得超6個贊
1、既然是操作符重載,就必然會訪問類的私有成員變量,根據(jù)類的封裝性要求,除了友元函數(shù)外,其他任何外部操作都是違規(guī)的,所以不能用普通函數(shù)來重載操作符。
2、賦值操作符的重載函數(shù)在沒有顯式定義的情況下,編譯程序會自動生成,即使類成員變量包含有指針,也會將指針的值給予復(fù)制,所以往往會造成多個實例共享一個存儲空間的尷尬局面,當(dāng)最先定義的類被析構(gòu)后,尚存的實例還在指向已被釋放的存儲空間,從而造成成員變量的值已經(jīng)銷毀,而該實例還存在的難以接受的現(xiàn)實。
3、賦值函數(shù)是構(gòu)造函數(shù)的重載,不是普通的成員函數(shù),不能用對象來調(diào)用,該函數(shù)只需一個同類型的參數(shù),且以常量、引用的方式出現(xiàn),而友元函數(shù)的參數(shù)與被重載的運算符要求的數(shù)量一致,比如+,-、*、/等都需要兩個參數(shù),這些概念與數(shù)學(xué)概念類似,而賦值操作符=在數(shù)學(xué)概念中不是運算符,所以說,運算符重載的友元函數(shù)的參數(shù)不會低于2個(這些運算符是數(shù)學(xué)概念中的運算符)。
- 3 回答
- 0 關(guān)注
- 1705 瀏覽
添加回答
舉報