wordpress 經(jīng)過天數(shù)大地seo視頻
1 運(yùn)算符重載
????????C++為了增強(qiáng)代碼的可讀性引入了運(yùn)算符重載,運(yùn)算符重載是具有特殊函數(shù)名的函數(shù),
也具有其返回值類型,函數(shù)名字以及參數(shù)列表,其返回值類型與參數(shù)列表與普通的函數(shù)類似。
函數(shù)名字為:關(guān)鍵字operator后面接需要重載的運(yùn)算符符號。????????
函數(shù)原型:返回值類型?operator操作符(參數(shù)列表)
注意:
????????不能通過連接其他符號來創(chuàng)建新的操作符:比如operator@
????????重載操作符必須有一個類類型參數(shù)
????????用于內(nèi)置類型的運(yùn)算符,其含義不能改變,例如:內(nèi)置的整型+,不 能改變其含義
????????作為類成員函數(shù)重載時,其形參看起來比操作數(shù)數(shù)目少1,因?yàn)槌蓡T函數(shù)的第一個參數(shù)為隱藏的this
????????.* :: sizeof ?: . 注意以上5個運(yùn)算符不能重載。這個經(jīng)常在筆試選擇題中出現(xiàn)。
?
????????2 賦值運(yùn)算符重載
????????1. 賦值運(yùn)算符重載格式
????????參數(shù)類型:const T&,傳遞引用可以提高傳參效率
????????返回值類型:T&,返回引用可以提高返回的效率,有返回值目的是為了支持連續(xù)賦值
????????檢測是否自己給自己賦值
????????返回*this :要復(fù)合連續(xù)賦值的含義
????????2. 賦值運(yùn)算符只能重載成類的成員函數(shù)不能重載成全局函數(shù)
????????原因:賦值運(yùn)算符如果不顯式實(shí)現(xiàn),編譯器會生成一個默認(rèn)的。此時用戶再在類外自己實(shí)現(xiàn)
一個全局的賦值運(yùn)算符重載,就和編譯器在類中生成的默認(rèn)賦值運(yùn)算符重載沖突了,故賦值運(yùn)算符重載只能是類的成員函數(shù)。
????????3. 用戶沒有顯式實(shí)現(xiàn)時,編譯器會生成一個默認(rèn)賦值運(yùn)算符重載,以值的方式逐字節(jié)拷貝。注意:內(nèi)置類型成員變量是直接賦值的,而自定義類型成員變量需要調(diào)用對應(yīng)類的賦值運(yùn)算符重載完成賦值。
????????既然編譯器生成的默認(rèn)賦值運(yùn)算符重載函數(shù)已經(jīng)可以完成字節(jié)序的值拷貝了,還需要自己實(shí)
現(xiàn)嗎?當(dāng)然像日期類這樣的類是沒必要的。
????????如果類中未涉及到資源管理,賦值運(yùn)算符是否實(shí)現(xiàn)都可以;一旦涉及到資源管理則必
須要自己實(shí)現(xiàn)。