成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++和Java 的缺省初始化問題

開發(fā) 后端
缺省初始化問題是基礎(chǔ),本文是針對(duì)初學(xué)者來說的。本文作者詳細(xì)介紹了這個(gè)問題,希望能夠給你到來幫助,一起來看。

缺省初始化這是個(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。

 

【編輯推薦】

  1. JavaFX對(duì)Java開發(fā)者到底意味著什么
  2. JavaScript重構(gòu)深入剖析
  3. Java程序中解決數(shù)據(jù)庫(kù)超時(shí)與死鎖
  4. 詳談JAVA一維和多維數(shù)組
  5. JAVA中執(zhí)行DOS命令分析
責(zé)任編輯:于鐵 來源: CSDN博客
相關(guān)推薦

2023-11-12 23:08:17

C++初始化

2010-02-06 14:40:50

C++初始化和賦值

2010-02-03 11:01:18

C++類靜態(tài)成員初始化

2010-02-01 14:21:24

C++初始化列表

2023-10-06 20:57:52

C++聚合成員

2010-02-05 17:16:05

C++構(gòu)造函數(shù)

2010-02-06 15:58:10

C++集合初始化

2024-03-13 08:52:43

C++初始化方式

2011-06-17 15:29:44

C#對(duì)象初始化器集合初始化器

2009-08-26 18:28:44

C#數(shù)組

2023-12-04 10:57:52

函數(shù)C++

2024-08-08 16:34:16

C++11編程

2024-08-26 15:06:20

2012-02-28 10:04:09

Java

2020-10-12 09:49:14

C++ 開發(fā)代碼

2023-12-18 09:26:12

C++switchif

2009-09-18 11:15:52

C#數(shù)組初始化

2009-07-31 17:51:27

C#對(duì)象初始化

2012-03-13 13:38:42

Java

2010-02-06 10:24:48

C++二維數(shù)組初始化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品区二区三区日本 | 国产精品视频导航 | 一二三区在线 | 精品国产乱码一区二区三区a | 国产精品久久久久久久久久软件 | 国产精品福利在线 | 国产精品亚洲第一区在线暖暖韩国 | 成人性视频免费网站 | 国产成人免费视频网站高清观看视频 | 午夜欧美一区二区三区在线播放 | 天天干天天谢 | 久久精品欧美一区二区三区不卡 | 性生生活大片免费看视频 | 日韩高清国产一区在线 | 日韩www视频 | 黄色三级在线播放 | 成人av网站在线观看 | 欧美二区在线 | 国产成人免费网站 | 天天草视频 | 欧美一区二区 | 精品久久久久久久 | 日韩1区 | 国产色婷婷精品综合在线手机播放 | 国产伦精品一区二区三区视频金莲 | 天天爽夜夜爽精品视频婷婷 | 毛片一级片 | 国产99视频精品免费视频7 | 国产精品第2页 | 色花av| 国产精品欧美一区二区三区不卡 | 日本网站免费观看 | 鲁大师一区影视 | 久久精品一二三影院 | 无码日韩精品一区二区免费 | 午夜一级黄色片 | 亚洲国产精品精华素 | 日本视频在线播放 | 欧美最猛黑人xxxⅹ 粉嫩一区二区三区四区公司1 | 日韩在线播放av | 亚洲精品一区二区三区在线观看 |