2018-04-03 创建人:Ruo_Xiao
开发环境:VS2010
邮箱:xclsoftware@163.com
2018-04-13 修改人:Ruo_Xiao
增加对常引用和引用的说明。
栗子:
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
int i1 = 3,&i2 = i1;
cout<<"i1 = "<<i1<<endl;
cout<<"i2 = "<<i2<<endl;
i2 = 4;
cout<<"i1 = "<<i1<<endl;
cout<<"i2 = "<<i2<<endl;
i1 = 5;
cout<<"i1 = "<<i1<<endl;
cout<<"i2 = "<<i2<<endl;
cin.get();
return 0;
}
结果:
结论:
1、 “&”有两个作用:
(1)取地址符。
(2)引用。
2、 此处就是引用,定义一个引用变量,就是说i2是i1的一个别名。i2就是代表的i1。注意的是声明引用变量要初始化。
3、如果说变量名称是变量在内存中的第一标签,则引用是变量在内存中的第二标签。
4、引用和指针的区别如下:
(1)不存在空引用,但是存在空指针(NULL)。
(2)一旦引用被初始化一个对象,则该引用不能被指向另一个对象。指针可以在任何时候指向另一个对象。
(3)引用必须在创建时被初始化,指针可以在任何时候初始化。
5、非const引用不能赋常量。
栗子:
int &t = 3; // error C2440: “初始化”: 无法从“int”转换为“int &”
const int &t = 3;
6、非const引用不能与const对象绑定,因为常量a的值不可改变,但却可以通过非const引用来改变常量a的值,这样做是错误的。
7、引用的类型必须与所引用的对象类型一致。例外:在初始化常量引用时可以用任意的表达式作为初始值,只要表达式的结果能转换成引用的类型。
(SAW:Game Over!)