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];
}

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