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