正文

回到頂部

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

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

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

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

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

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

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

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

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

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

延伸閱讀

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