cppTest-3.6:引用

/**
 *cppTest-3.6:引用
 *
 *引用雖然具有指針的一部分功能,但是限制還是很多的!
 *author 煒sama
 */
#include<iostream.h>

int ia[]={1,2,3,4,5};
int &index(int i);
void swap(int &n1,int &n2);//聲明時形參與定義時一樣,表明形參爲引用類型的
void main()
{
	int i=5;
	int &ri=i;
	cout<<"i="<<i<<", ri="<<ri<<endl;
	i=i*3;
	cout<<"i="<<i<<", ri="<<ri<<endl;
	ri=ri+5;
	cout<<"i="<<i<<", ri="<<ri<<endl;

	int a=3,b=5;
	swap(a,b);//但是調用時實參不需要定義爲引用的!因爲這相當於把實參賦給了定義爲引用類型的形參!
	cout<<"a="<<a<<", b="<<b<<endl;

	for(int j=1;j<5;j++)index(0)+=index(j);
    cout<<index(0)<<","<<ia[0]<<endl;

	int is[2]={1,2};
	//int &ri2;//不能建立無任何實體的引用。必須要初始化!
	                 //但是類的成員可以這樣定義,不過一定要用構造函數的參數列表來初始化!
	                 //詳情請看我的例子:cppTest-6.0:類中特殊的成員的初始化.cpp
	//int &a[5];//不能建立數組的引用!
	//int &*p;//不能建立指向指針的引用!
	//int &&ri;//不能建立引用的引用!
	//可見,引用雖然具有指針的一部分功能,但是限制還是很多的!
}

void swap(int &n1,int &n2)//定義時表明形參爲引用類型的
{
    int temp=n1;
    n1=n2;
    n2=temp;
}

int &index(int i)//這裏將函數返回值定義爲引用類型,因爲返回的是a[i],那麼對函數的返回類型的修改就是對a[i]的修改了!
{
    return ia[i];
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章