物聯(lián)網(wǎng)嵌入式學(xué)習(xí)的內(nèi)容繁雜,很多小伙伴在準(zhǔn)備物聯(lián)網(wǎng)面試的時(shí)候,面對(duì)眾多知識(shí)點(diǎn)無(wú)從下手。小千在此為大家整理了物聯(lián)網(wǎng)面試題集錦—C++語(yǔ)言篇,希望能夠幫助大家順利通關(guān)!
1、構(gòu)造函數(shù)的分類
按參數(shù)類型:分為無(wú)參構(gòu)造函數(shù)和有參構(gòu)造函數(shù)
按類型分類:普通構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù)(復(fù)制構(gòu)造函數(shù))
2、構(gòu)造函數(shù)的調(diào)?規(guī)則
默認(rèn)情況下,c++編譯器?少為我們寫的類增加3個(gè)函數(shù)
1)默認(rèn)構(gòu)造函數(shù)(無(wú)參,函數(shù)體為空)
2)默認(rèn)析構(gòu)函數(shù)(無(wú)參,函數(shù)體為空) 3.默認(rèn)拷?構(gòu)造函數(shù),對(duì)類中非靜態(tài)成員屬性簡(jiǎn)單值拷貝 如果用戶定義拷貝構(gòu)造函數(shù),c++不會(huì)再提供任何默認(rèn)構(gòu)造函數(shù) 如果用戶定義了普通構(gòu)造(非拷貝),c++不在提供默認(rèn)無(wú)參構(gòu)造,但是會(huì)提供默認(rèn)拷貝構(gòu)造
//調(diào)用拷貝構(gòu)造函數(shù)(如果用戶 不實(shí)現(xiàn)拷貝構(gòu)造 系統(tǒng)將調(diào)用默認(rèn)的拷貝構(gòu)造)
//默認(rèn)的拷貝構(gòu)造:?jiǎn)渭兊恼w賦值(淺拷貝)
//如果用戶實(shí)現(xiàn)了拷貝構(gòu)造、系統(tǒng)將調(diào)用用戶實(shí)現(xiàn)的拷貝構(gòu)造
記住一句話:舊對(duì)象 初始化 新對(duì)象 才會(huì)調(diào)用拷貝構(gòu)造函數(shù)。
拷貝構(gòu)造函數(shù)的注意事項(xiàng)
1.不能調(diào)用拷貝構(gòu)造函數(shù)去初始化匿名對(duì)象,
2.對(duì)象作為函數(shù)的參數(shù) 如果實(shí)參與形參 都是普通對(duì)象 那么就會(huì)調(diào)用拷貝構(gòu)造
3.函數(shù)返回局部對(duì)象 在qt中會(huì)被優(yōu)化 從而調(diào)用不了拷貝構(gòu)造
3、談?wù)勀銓?duì)淺拷?與深拷貝的區(qū)別
淺拷貝
同?類型的對(duì)象之間可以賦值,使得兩個(gè)對(duì)象的成員變量的值相同,兩個(gè)對(duì)象仍然是獨(dú)?的兩個(gè)對(duì)象,這種情況被稱為淺拷貝. ?般情況下,淺拷貝沒(méi)有任何副作用,但是當(dāng)類中有指針,并且指針指向動(dòng)態(tài)分配的內(nèi)存空間,析構(gòu)函數(shù)做了動(dòng)態(tài)內(nèi)存釋放的處理,會(huì)導(dǎo)致內(nèi)存問(wèn)題。 淺拷貝的問(wèn)題(多次釋放同一塊堆區(qū)空間)
深拷貝
當(dāng)類中有指針,并且此指針有動(dòng)態(tài)分配空間,析構(gòu)函數(shù)做了釋放處理,往往需要自定義拷貝構(gòu)造函數(shù),自行給指針動(dòng)態(tài)分配空間,深拷貝如果類中的成員指向了堆區(qū)空間 ,一定要記得在析構(gòu)函數(shù)中釋放該空間;如果用戶 不實(shí)現(xiàn) 拷貝構(gòu)造 系統(tǒng)就會(huì)提供默認(rèn)拷貝構(gòu)造;而默認(rèn)拷貝構(gòu)造 只是單純的賦值 容易造成淺拷貝問(wèn)題;用戶記得要實(shí)現(xiàn):無(wú)參構(gòu)造(初始化數(shù)據(jù))、有參構(gòu)造(賦參數(shù))、拷貝構(gòu)造(深拷貝) 、析構(gòu)函數(shù)(釋放空間)。
更多關(guān)于“物聯(lián)網(wǎng)培訓(xùn)”的問(wèn)題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬(wàn)人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時(shí)歡迎你來(lái)試聽(tīng)。