2 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
這里的&X和&Y,是函數(shù)中引用形參,首先應(yīng)該了解引用這一概念。
首先用SetPos(100,200),將100和200分別賦值給類Place里面的成員變量x和y,要注意main函數(shù)中又定義了一個(gè)x和y,這兩個(gè)地方的x和y是不一樣的!
在GetPos中的X和Y是局部變量,需要用到指針或者引用,才可以將其值傳出來。由于GetPos中的X和Y是局部變量,如果直接寫成GetPos(int X, int Y),那么在調(diào)用玩GetPos這個(gè)函數(shù)后,X和Y占用的內(nèi)存就會(huì)釋放。引用的作用在這里就體現(xiàn)出來了,你可以將指針里面學(xué)的知識(shí)類比來學(xué)習(xí),指針里面有個(gè)很經(jīng)典的例子就是數(shù)據(jù)交換:
void swap(int v1, int v2)
{
int temp = v2;
v2 = v1;
v1 = temp;
}
void swap(int *v1,int *v2)
{
int *temp;
*temp = *v2;
*v2 = *v1;
*v1 = temp;
}
上面的兩個(gè)交換函數(shù)只有后者才交換成功了,后者的交換函數(shù)還可以用下面的寫法:
void swap(int &v1, int &v2)
{
int temp = v2;
v2 = v1;
v1 = temp;
}
仔細(xì)體會(huì)局部變量,全局變量,指針,引用的妙用
追問
這個(gè)getpos()參數(shù)中使用引用的意義是不是用來將main函數(shù)中的x,y和這個(gè)局部變量XY綁定在一起,也就是說,在調(diào)用完getpos之后X,Y不會(huì)釋放?
追答
可以這樣理解。 GetPos中的X和Y不是接受的x,y的值,而是接受的x,y的地址,對X和Y的操作就相當(dāng)于對x,y 的操作。
- 2 回答
- 0 關(guān)注
- 1425 瀏覽
添加回答
舉報(bào)