一啥箭、函數(shù)的傳參&返回值(引用傳值效率高于值傳遞)
1)參數(shù)盡量考慮使用對(duì)象引用,對(duì)于要求函數(shù)不改變對(duì)象內(nèi)容的情況使用const。
2) ?返回值盡量使用對(duì)象引用扳躬, 對(duì)于返回值是局部對(duì)象的情況只能返回對(duì)象不能是引用
原因是局部的對(duì)象在函數(shù)執(zhí)行完畢之后會(huì)被析構(gòu)锅减,外部的引用將對(duì)應(yīng)一個(gè)無效的對(duì)象糖儡。
舉個(gè)栗子理解下函數(shù)傳參,假設(shè)自己有份文件需要?jiǎng)e人幫你處理怔匣,你把文件傳遞給別人的方式簡(jiǎn)單來說可以有兩種:
1休玩、將文件拷貝一份發(fā)送給對(duì)方,之后讓他處理劫狠,這樣的好處是他的修改不會(huì)影響到你的原始文件
缺點(diǎn)是浪費(fèi)空間拴疤,這就相當(dāng)于函數(shù)傳參 值傳遞的方式。
2独泞、告訴對(duì)方你要處理的文件位置呐矾,讓他訪問之并處理,這樣的好處是節(jié)省空間時(shí)間懦砂,
不好的地方就是對(duì)方會(huì)修改到你原始的文件蜒犯,為應(yīng)對(duì)這種情況就可以考慮設(shè)置相應(yīng)的權(quán)限,如只讀
這種方式就相當(dāng)于函數(shù)傳參的引用傳遞荞膘,權(quán)限的設(shè)置就是是否加const
二罚随、運(yùn)算符重載
格式:返回值 opreator 運(yùn)算符(參數(shù)列表){函數(shù)體}
1)注意函數(shù)的傳參和返回值
2)對(duì)于運(yùn)算符要連續(xù)使用的情況需要返回引用
3)使用非成員函數(shù)進(jìn)行操作符重載 vs?使用成員函數(shù)進(jìn)行操作符重載(操作符作用在類對(duì)象)
三、const 的使用
1) 對(duì)于不可變的對(duì)象傳參使用 const 引用
2)對(duì)于不修改成員數(shù)據(jù)的成員函數(shù)使用const 標(biāo)識(shí)是好的編碼習(xí)慣
四羽资、帶有指針成員的class
1)三大成員函數(shù):拷貝構(gòu)造淘菩、op=重載、析構(gòu)(資源釋放)
2)使用默認(rèn)的拷貝構(gòu)造屠升、op=重載會(huì)存在問題:
a潮改、出現(xiàn)多個(gè)對(duì)象指向同一塊內(nèi)存空間的情況,修改其中一個(gè)影響其他的
b腹暖、被賦值的對(duì)象的指針將造成內(nèi)存泄漏