精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
大家都知道,C语言里有指针,指针很灵活,但是指针也很野蛮,指针里的地址可以是错误的,可以是伪造的,可以是为空,如果是这样的情况,使用指针就会带来致命的问题。
为了解决指针的问题,C++里对指针进行了升级,升级为引用,并引入了安全机制。引用术语对国人来说是难理解的,引用如果换成全权委托,则好理解,全权是指拥有同样的权利,委托是互为代表合为一体。
指针是通过地址进行了代表,但是引用通过一种安全的机制进行了代表,这个机制要求对象级的代表,意思是说引用对象必定和一个实际的对象强制关联,如果不关联,在编译时就会报错,这样就比指针安全多了。
对象代表的示例如下:
int a=0;
int &ra=a;
这时ra就和a是一会事。
如果写成int &ra=0;则编译就会报错。
上文里int &ra=a;就是一种最基本的形式,定义引用变量。
引用还可以出现在参数和函数返回类型。
引用用的符号“&”是和取地址符号“&”一样的符号,很多初学者就会产生混淆,其实分辨也很简单。
取地址符号在一个变量前面出现,返回出来指针来用,这个场合和引用的三个场合:定义引用对象、引用参数和引用返回类型都可区分开。引用参数位置不可能再理解为取地址指针,所以很好区分。
X(int i)//构造函数
{m_ivar=i;}
X(Const X& Other) //拷贝构造函数//类X和对象Other间加引用符号是什么意思?
{m_ivar=Other.m_ivar;}
引用是全权委托。形参的修改,让传入的实参也有对应修改。
可以理解为调用时传入的实参变量和Ohter形参是一个变量