操作符過載

2021-07-13 23:54:12 字數 1106 閱讀 3855

1、定義:操作符操作自定義型別運算元

注意: 1)只能過載已經存在的操作符

2)操作符的運算元應與原始定義的運算元相同

3)至少有乙個運算元少使用者自定義型別

object + object

object + int

4)過載後的優先順序不變

2、過載形式:friend函式,成員函式

3、輸出操作符過載:

cout:物件 cin:物件

ostream:輸出流型別 stream:輸入流型別

輸入輸出操作符過載只能使用友元

4、下標操作符過載:只能用成員函式形式

5、賦值操作符:只能用成員函式形式實現

*淺拷貝*:將物件中的成員變數的值一一拷貝,賦值給另乙個物件

⚠️:如果成員變數包含指標(手動分配空間在堆上),=(淺拷貝),僅僅是把指標的值賦 值給另乙個指標(指向同一空間)

結果:1)被賦值的物件堆空間記憶體洩漏

2)兩個指標指向同一塊空間,物件銷毀會造成記憶體是二次刪除

3) 修改乙個物件的成員變數,另乙個物件也會發生改變

***深拷貝***:賦值運算子過載

⚠️: 1)避免自賦值

2)釋放舊空間

3)開闢新空間

4)賦值

5)return this;(函式鏈)

例: //賦值運算子過載:深拷貝(一定要用成員函式的方式)

person& person::operator=(const person& p1)

return *this; //5、函式鏈

}

2、new:當主函式使用new定義物件時(對像本身就在堆空間),一定要用delete手動釋 放,否則函式不會自動調 用析構函式(釋放指標指向的堆空間記憶體)

例:operator.cpp

set *s2 = new

set(6,arr,(char*)"jiji");

cout<<*s2

操作符過載

ifndef vertex h define vertex h class vertex vertex float px float py float pz vertex operator const vertex p vertex operator const vertex p void oper...

操作符過載

1.操作符是靜態方法,返回值表示操作結果,引數是運算元。2.操作符過載需要在過載的操作符前加上operator關鍵字。3.最好少用操作符過載,只有在意義明晰而且與內建類的操作一致時才適合使用,以免造成混亂。以建立的分數類 fraction 中的 為例,該分數類中有兩個int型的私有屬性 分子 num...

過載操作符

1.過載操作符1.1 限制過載操作符具有以下限制 1 只有c 預定義的操作符集中的操作符才可以被過載 2 對於內建型別的操作符,它的預定義不能被改變,應不能為內建型別過載操作符,如,不能改變int型的操作符 的含義 3 也不能為內建的資料型別定義其它的操作符 4 只能過載類型別或列舉型別的操作符 5...