日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C++和Java的缺省初始化問題

缺省初始化這是個基礎(chǔ)問題,但往往有些迷惑,尤其是當(dāng)你同一個時間有時寫Java,有時寫C++ ,總結(jié)如下:

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供甘泉網(wǎng)站建設(shè)、甘泉做網(wǎng)站、甘泉網(wǎng)站設(shè)計、甘泉網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、甘泉企業(yè)網(wǎng)站模板建站服務(wù),十載甘泉做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

C++中基本類型只有作為全局變量才會進行,而對于類類型只要這個類具有一個無參構(gòu)造函數(shù)則不管這個類的對象是局部變量還是全局變量,它都會進行缺省的初始化,甚至當(dāng)一個對象通過缺省初始化機制進行創(chuàng)建時,這個對象的類類型數(shù)據(jù)成員也會根據(jù)它們自己的無參構(gòu)造函數(shù)進行缺省的初始化。

但是若該類沒有無參構(gòu)造函數(shù),那么若這個類沒有任何構(gòu)造函數(shù),系統(tǒng)將會為這個類提供一個缺省的無參構(gòu)造函數(shù),理論上這個構(gòu)造函數(shù)會講這個類的每個數(shù)據(jù)成員初始化為釋放類型的0,但是這因編譯器而異,我們***不要有依賴,系統(tǒng)提供的缺省無參構(gòu)造函數(shù)完全有可能只進行內(nèi)存分配而不進行初始化;

若還有其他構(gòu)造函數(shù),則系統(tǒng)不會提供無參構(gòu)造函數(shù),此時編譯器編譯不通過,對于這種情況在實際編程中我們可以對其他構(gòu)造函數(shù)之一的所有參數(shù)進行缺省賦值來彌補。

系統(tǒng)不會提供無參構(gòu)造函數(shù)的另外一個情況是:一個類包含了未初始化的const或引用成員,在這種情況下,我們別無選擇,職能顯式的進行初始化。注意,此時不能在類的內(nèi)部進行初始化,其實在C++中未有static const類型的數(shù)據(jù)成員可以進行類內(nèi)部初始化,除此以外數(shù)據(jù)成員都不能在類內(nèi)部進行初始化,但Java并沒有這些限制。

對于這個問題,Java就有一個準(zhǔn)則,那就是當(dāng)一個變量被定義時(而不是只聲明不定義--當(dāng)然,這種情況只有一個:變量在一個函數(shù)內(nèi)部初次出現(xiàn),且沒有提供初始值時),它總是缺省的初始化為適當(dāng)類型的0(除非這個變量已經(jīng)在類定義中有初始值了——再次注意這個在C++中是不可行的)。但和C++不同,Java的一個對象中類類型數(shù)據(jù)成員的引用不會使用無參構(gòu)造函數(shù)進行缺省的初始化,而是簡單的置為null。

***,要注意的是Java不允許我們?yōu)橐粋€函數(shù)的參數(shù)提供缺省值,因為我們再C++中通過給一個常規(guī)的構(gòu)造函數(shù)參數(shù)提供缺省值來達到無參構(gòu)造函數(shù)的方法在Java中無法使用。

對于數(shù)組,C++的缺省初始化規(guī)則如下:

基本類型的數(shù)組,若為全局作用域則被缺省初始化為適當(dāng)類型的0,若為局部作用域則不會被缺省初始化。

類類型的數(shù)組,若作為數(shù)組元素的類沒有一個無參構(gòu)造函數(shù)(此時定義了一個或多個其他的構(gòu)造函數(shù),系統(tǒng)因此也不會提供缺省無參構(gòu)造函數(shù)了),則該數(shù)組無法聲明;若有一個程序員顯式提供的無參構(gòu)造函數(shù)則會進行初始化;若有一個系統(tǒng)提供的隱式無參缺省初始化構(gòu)造函數(shù)則在全局作用域上才會初始化。

而在Java中C++的數(shù)組初始化問題是不存在的,數(shù)組的各個元素都會自動進行初始化,類類型對象的數(shù)組元素將初始化為null。


網(wǎng)頁標(biāo)題:C++和Java的缺省初始化問題
轉(zhuǎn)載注明:http://www.dlmjj.cn/article/dpigdid.html