引用是什么呢?引用可以看作一个已定义变量的别名,引用说明为对象建立引用名,即别名,引用在定义初始化时与对象名绑定,程序中不能对引用重定义,一个对象的别名,从使用方式和效果上,与使用对象名一致。
引用的语法为:类型 &引用名=对象名,&是引用标识符
如:
#include <iostream>
using namespace std;
void main()
{
int a=10;
int &b=a;//b就是a的别名
}
引用没有定义,是一种关系型的声明,声明它和原有某一变量(实体)的关系。类型与原类型要保持一致,且不分配内存,声明时必须初始化,一声明就不可以改了,
一个变量可以有拥有多个别名:
#include <iostream>
using namespace std;
void main()
{
int a, b;
int &c=a;
int &c=b;//错的,不可以更改原有的引用关系
char &d=b;//错的,他们的类型不一致
int &f=a;//引用的引用,现在的a有两个别名:c和f
}
用引用做为函数参数时:
#include <iostream>
using namespace std;
void text(int &x, int &y)
{
int temp = x;
x = y;
y = temp;
}
void main()
{
int a = 1; int b = 2;
cout << a << " " << b << endl;
text(a, b);
cout << a << " " << b << endl;
}
结果时这样的:
这个说明是什么呢,说明了当引用作为函数参数声明时,修改形参的值就相当于修改了实参的值。
你们觉得普通的引用有自己的空间吗,你们可能觉得引用只是个别名而已,没有自存储空间,其实是有的,引用在C++中的内部实现是一个常指针,所以引用所占的空间大小与指针相同。
type &atype *const name
引用作为函数的返回值时:
#include <iostream>
using namespace std;
int &text()
{
int a=10;
}
void main()
{
int a=0;
a=text();
}
这个呢是将引用赋值给一个变量,会有拷贝的动作,其实编译器类似做了如下的操作:a=*(text())。
以上是我对C++中引用的一些理解。