物聯(lián)網嵌入式學習的內容繁雜,很多小伙伴在準備物聯(lián)網面試的時候,面對眾多知識點無從下手。小千在此為大家整理了物聯(lián)網面試題集錦—C++語言篇,希望能夠幫助大家順利通關!
1、談談啥叫對象成員以及對象成員的構造函數(shù)調用方式
在類中定義的數(shù)據成員?般都是基本的數(shù)據類型。但是類中的成員也可以是對象,叫做對象成員。
C++中對對象的初始化是非常重要的操作,當創(chuàng)建?個對象的時候,c++編譯器必須確保調?了所有子對象的構造函數(shù)。如果所有的子對象有默認構造函數(shù),編譯器可以自動調用他們。但是如果子對象沒有默認的構造函數(shù),或者想指定調用某個構造函數(shù)怎么辦?
那么是否可以在類的構造函數(shù)直接調用子類的屬性完成初始化呢?但是如果子類的成員屬性是私有的,我們是沒有辦法訪問并完成初始化的。
解決辦法非常簡單:對于?類調用構造函數(shù),c++為此提供了專門的語法,即構造函數(shù)初始化列表。 當調用構造函數(shù)時,?先按各對象成員在類定義中的順序(和參數(shù)列表的順序無關)依次調用它們的構造函數(shù),對這些對象初始化,最后再調用本身的函數(shù)體。也就是說,先調用對象成員的構造函數(shù),再調用本身的構造函數(shù)。 析構函數(shù)和構造函數(shù)調用順序相反,先構造,后析構。
2、談談你對explicit的理解
c++提供了關鍵字explicit,禁止通過構造函數(shù)進行的隱式轉換。聲明為explicit的構造函數(shù)不能在隱式轉換中使用;
(1)C++中只帶有一個參數(shù)的構造函數(shù),或者或者除了第一個參數(shù)外其余參數(shù)都有缺省值的多參構造函數(shù),承擔了兩個角色;
1.用于構建單參數(shù)的類對象
2.隱含的類型轉換操作符
例如:一個類A的構造函數(shù)A(int i)就是,既可以用來作為構造器,又可以實現(xiàn)隱式轉換A a=1;因為1可以通過構造函數(shù)A(int i)轉換為一個類A的對象。(隱含的類型轉換操作符)
(2)explicit關鍵字只對有一個參數(shù)的類構造函數(shù)有效, 如果類構造函數(shù)參數(shù)大于或等于兩個時, 是不會產生隱式轉換的, 所以explicit關鍵字也就無效了。
(3)聲明為explicit的構造函數(shù)不能在隱式轉換中使用,只能顯示調用,去構造一個類對象。
(4)盡量避免有二義性的類型轉換,如果類中包含一個或多個隱式類型轉換,則必需使用explicit關鍵字確保在類類型和目標類型之間只存在唯一一種隱式轉換方式,否則將出現(xiàn)二義性。
(5)但是將拷貝構造函數(shù)聲明成explicit并不是良好的設計,一般只將有單個參數(shù)的constructor聲明為explicit,而copy constructor不要聲明為explicit。
更多關于物聯(lián)網培訓的問題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項目實操的話可以點擊咨詢課程顧問,獲取試聽資格來試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。