正文

回到頂部

1.自我賦值是如何發(fā)生的

當(dāng)一個對象委派給自己的時候,自我賦值就會發(fā)生:

平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),游戲開發(fā),動畫培訓(xùn)

1 class Widget { ... };2 3 Widget w;4 5 ...6 7 w = w; // assignment to self、

平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),游戲開發(fā),動畫培訓(xùn)

這看上去是愚蠢的,但這是合法的,所以請放心,客戶端是可以這么做的。此外,自身賦值也并不總是很容易的能夠被辨別出來。舉個例子:

1 a[i] = a[j]; // potential assignment to self

上面的代碼在i和j相等的情況下就是自我賦值,同樣的,看下面的例子:

*px = *py; // potential assignment to self

如果px和py恰巧指向同一個東西,那么上面的語句就是自身賦值。這些并不怎么明顯的自我賦值是使用別名的結(jié)果:也就是使用不止一種方法來指向同一個對象。一般情況下,當(dāng)我們操作指向不同同類型對象的引用和指針時,需要考慮這些不同的對象是否是同一個對象。事實上,如果兩個對象來自同一個繼承體系,這兩個對象甚至不必聲明為同類型的,因為基類的指針或者引用可以指向派生類對象:

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式