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