這篇文章主要介紹“C++和Java 的缺省初始化介紹”,在日常操作中,相信很多人在C++和Java 的缺省初始化介紹問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”C++和Java 的缺省初始化介紹”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
為東港等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及東港網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、東港網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
缺省初始化這是個(gè)基礎(chǔ)問題,但往往有些迷惑,尤其是當(dāng)你同一個(gè)時(shí)間有時(shí)寫Java,有時(shí)寫C++,總結(jié)如下:
C++中基本類型只有作為全局變量才會(huì)進(jìn)行,而對(duì)于類類型只要這個(gè)類具有一個(gè)無參構(gòu)造函數(shù)則不管這個(gè)類的對(duì)象是局部變量還是全局變量,它都會(huì)進(jìn)行缺省的初始化,甚至當(dāng)一個(gè)對(duì)象通過缺省初始化機(jī)制進(jìn)行創(chuàng)建時(shí),這個(gè)對(duì)象的類類型數(shù)據(jù)成員也會(huì)根據(jù)它們自己的無參構(gòu)造函數(shù)進(jìn)行缺省的初始化。
但是若該類沒有無參構(gòu)造函數(shù),那么若這個(gè)類沒有任何構(gòu)造函數(shù),系統(tǒng)將會(huì)為這個(gè)類提供一個(gè)缺省的無參構(gòu)造函數(shù),理論上這個(gè)構(gòu)造函數(shù)會(huì)講這個(gè)類的每個(gè)數(shù)據(jù)成員初始化為釋放類型的0,但是這因編譯器而異,我們***不要有依賴,系統(tǒng)提供的缺省無參構(gòu)造函數(shù)完全有可能只進(jìn)行內(nèi)存分配而不進(jìn)行初始化;
若還有其他構(gòu)造函數(shù),則系統(tǒng)不會(huì)提供無參構(gòu)造函數(shù),此時(shí)編譯器編譯不通過,對(duì)于這種情況在實(shí)際編程中我們可以對(duì)其他構(gòu)造函數(shù)之一的所有參數(shù)進(jìn)行缺省賦值來彌補(bǔ)。
系統(tǒng)不會(huì)提供無參構(gòu)造函數(shù)的另外一個(gè)情況是:一個(gè)類包含了未初始化的const或引用成員,在這種情況下,我們別無選擇,職能顯式的進(jìn)行初始化。注意,此時(shí)不能在類的內(nèi)部進(jìn)行初始化,其實(shí)在C++中未有static const類型的數(shù)據(jù)成員可以進(jìn)行類內(nèi)部初始化,除此以外數(shù)據(jù)成員都不能在類內(nèi)部進(jìn)行初始化,但Java并沒有這些限制。
對(duì)于這個(gè)問題,Java就有一個(gè)準(zhǔn)則,那就是當(dāng)一個(gè)變量被定義時(shí)(而不是只聲明不定義--當(dāng)然,這種情況只有一個(gè):變量在一個(gè)函數(shù)內(nèi)部初次出現(xiàn),且沒有提供初始值時(shí)),它總是缺省的初始化為適當(dāng)類型的0(除非這個(gè)變量已經(jīng)在類定義中有初始值了——再次注意這個(gè)在C++中是不可行的)。但和C++不同,Java的一個(gè)對(duì)象中類類型數(shù)據(jù)成員的引用不會(huì)使用無參構(gòu)造函數(shù)進(jìn)行缺省的初始化,而是簡(jiǎn)單的置為null。
***,要注意的是Java不允許我們?yōu)橐粋€(gè)函數(shù)的參數(shù)提供缺省值,因?yàn)槲覀冊(cè)貱++中通過給一個(gè)常規(guī)的構(gòu)造函數(shù)參數(shù)提供缺省值來達(dá)到無參構(gòu)造函數(shù)的方法在Java中無法使用。
對(duì)于數(shù)組,C++的缺省初始化規(guī)則如下:
基本類型的數(shù)組,若為全局作用域則被缺省初始化為適當(dāng)類型的0,若為局部作用域則不會(huì)被缺省初始化。
類類型的數(shù)組,若作為數(shù)組元素的類沒有一個(gè)無參構(gòu)造函數(shù)(此時(shí)定義了一個(gè)或多個(gè)其他的構(gòu)造函數(shù),系統(tǒng)因此也不會(huì)提供缺省無參構(gòu)造函數(shù)了),則該數(shù)組無法聲明;若有一個(gè)程序員顯式提供的無參構(gòu)造函數(shù)則會(huì)進(jìn)行初始化;若有一個(gè)系統(tǒng)提供的隱式無參缺省初始化構(gòu)造函數(shù)則在全局作用域上才會(huì)初始化。
而在Java中C++的數(shù)組初始化問題是不存在的,數(shù)組的各個(gè)元素都會(huì)自動(dòng)進(jìn)行初始化,類類型對(duì)象的數(shù)組元素將初始化為null。
到此,關(guān)于“C++和Java 的缺省初始化介紹”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
當(dāng)前文章:C++和Java的缺省初始化介紹
當(dāng)前路徑:http://aaarwkj.com/article24/pdiece.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、關(guān)鍵詞優(yōu)化、企業(yè)網(wǎng)站制作、網(wǎng)站改版、企業(yè)建站、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
移動(dòng)網(wǎng)站建設(shè)知識(shí)