日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
對(duì)象創(chuàng)建:Java和C++比較

1、C++創(chuàng)建對(duì)象方式 

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比內(nèi)黃網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式內(nèi)黃網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋內(nèi)黃地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。

在C++中我們可以采用如下兩種方式來(lái)創(chuàng)建對(duì)象,

 
 
 
 
  1. Dog  dog;//Dog為類(lèi)名  
  2. Dog *p = new Dog(); 

這兩種方式在C++中都能完成對(duì)象的創(chuàng)建,但是在內(nèi)存中的處理卻完全不同。

對(duì)于第一種方式而言,dog是被存儲(chǔ)在棧中的,占用的大小是Dog類(lèi)中成員變量占用內(nèi)存的和,此處不包括成員方法,因?yàn)槌蓡T方法是存放在公共存儲(chǔ)區(qū)以便所有該類(lèi)的對(duì)象都可以訪問(wèn)的。

  

圖1 C++創(chuàng)建對(duì)象方式1的內(nèi)存分配

對(duì)于第二種方式則不同,該方式使用了指針,在定義*p時(shí)在棧中開(kāi)辟一個(gè)4字節(jié)的空間,new Dog()時(shí)在堆中開(kāi)辟一塊空間,然后將該空間的首地址賦值給*p,這樣,通過(guò)*p就可以找到對(duì)象在堆中的任何成員方法了。

圖2 C++創(chuàng)建對(duì)象方式2的內(nèi)存分配

2、Java創(chuàng)建對(duì)象方式  

在C++中我們有兩種創(chuàng)建對(duì)象的方式,而在Java中只提供了如下的一種方式,

 
 
 
 
  1. Dog dog = new Dog(); 

JVM在進(jìn)行內(nèi)存管理時(shí),首先會(huì)在棧中給dog分配一個(gè)空間,當(dāng)new Dog();后會(huì)在堆中開(kāi)辟對(duì)象的實(shí)際空間,然后將dog指向堆中的空間,這樣我們就可以方法對(duì)象的成員變量了。

    圖3 Java創(chuàng)建對(duì)象方式的內(nèi)存分配

3、總結(jié)

通過(guò)圖2和圖3我們會(huì)發(fā)現(xiàn)Java創(chuàng)建對(duì)象的方式和C++創(chuàng)建對(duì)象方式的第二種很像,除了我故意寫(xiě)的p和dog還有數(shù)字,其他的都是一樣的。是這樣的,他們的確很像,但是卻不完全相同,在C++中p是一個(gè)指針,通過(guò)指針我們可以訪問(wèn)內(nèi)存中的任何地址,可以肆意的對(duì)內(nèi)存做處理,然而在Java中 dog是一個(gè)引用,可以理解成是C++中指針的一個(gè)封裝,我們不可以想在C++中用指針那樣在Java中直接的進(jìn)行地址++操作,這樣一來(lái)就保證了內(nèi)存的安全,這是C++和Java的很大不同。

本人文字功底極弱,若有描述不清或不當(dāng)之處,望大家指正,感謝各位花費(fèi)時(shí)間閱讀完畢。


網(wǎng)頁(yè)標(biāo)題:對(duì)象創(chuàng)建:Java和C++比較
URL網(wǎng)址:http://www.5511xx.com/article/coopeje.html