C++
- 定義:引用就是某一變量(目標)的一個別名,對引用的操作與對變量直接操作完全一樣。
- int a=2,int &ra=a;
a為目標原名稱,ra為目標引用名阁簸。給ra賦值:ra=1; 等價于 a=1;如果操作ra的話相當對a進行操作。下面是一個簡單的例子:
int i=2;
int &ri=i;
ri++;
cout<< "i :"<< i <<" ri: "<< ri<<endl;
//打印結(jié)果是 i :3 ri: 3
java
-
java中的對象引用性質(zhì)上跟C++的引用大同小異哼丈。區(qū)別是創(chuàng)建一個對象變量時不需要加上&(java中基本數(shù)據(jù)類型沒有引用這個概念)启妹,該變量默認就是引用,還有另外一個重要的區(qū)別是java中的引用在改變其所"指向"時不改變其他最初和它指向同一內(nèi)容的引用的"指向"削祈。描述可能有點難理解翅溺,下面是一個例子
public class ReferClazz { public static void main(String args[]){ ReferClazz r0 = new ReferClazz(0); ReferClazz r1 = r0; r1.change(100); System.out.println("change--"+"r0 : "+r0+" r1 : "+r1); r1 = new ReferClazz(111); System.out.println("refer--"+"r0 : "+r0+" r1 : "+r1); // change--r0 : 100 r1 : 100 // refer--r0 : 100 r1 : 111 } int referNum; public ReferClazz(int referNum){ this.referNum = referNum; } public void change(int x){ this.referNum = x; } public String toString(){ return referNum+""; }
}
例子中引用r1改變了指向的對象并沒有使r0改變指向的對象,這樣驗證了前面的說法髓抑。但需要注意的是在Java中String對象的引用是一種比較特殊的存在咙崎,具體可參考https://m.oschina.net/blog/507100
##php
php引用本質(zhì)上跟C++大同小異,但有一個區(qū)別是php可以通過unset方法解開引用變量和其所指向的內(nèi)容吨拍,使該引用不在指向該內(nèi)容褪猛,但“解開”后并不改變其他最初和它指向同一內(nèi)容的引用的"指向"。