引用和const引用(笔记)

来源:互联网 发布:网络渗透软件 编辑:程序博客网 时间:2024/05/01 19:23

1.引用

#include<iostream>using namespace std;//引用不是变量//引用仅仅是变量的别名//引用没有自己独立的空间//引用要与它锁引用的变量共享空间//对引用所做的改变实际上是对它所引用变量的改变//引用在定义的时候要进行初始化//引用已经初始化,不能重新指向其它变量int main(void){int val = 100;//int& refval;error C2530: “refval”: 必须初始化引用int& refval = val;refval = 200;cout<<"val="<<val<<endl;//输出200int val2 = 500;refval = val2;//不代表将refval引用至val2这个变量//仅仅只是代表将val2赋值给refvalcout<<"val="<<val<<endl;}

2.const引用

#include<iostream>using namespace std;//const引用是指向const对象的引用int main(void) {const int val = 1024;const int& refval = val;//int& ref2 = val;//Error,“初始化”: 无法从“const int”转换为“int &”//refval = 200;//Error,refval是一个常量int val2 = 1024;const int& ref3 = val2;//const 引用指向非const对象double val3 = 3.14;const int& ref4 = val3;//会丢失精度 //等价于int temp = val3//const int& ref4 = temp;cout<<"ref4="<<ref4<<endl;cout<<"val3="<<val3<<endl;//int& ref5 = val3;// error C2440: “初始化”: 无法从“double”转换为“int &”return 0;}

3.引用作为参数传递

#include <iostream>using namespace std;//引用作为参数传递void swap(int& x, int& y){int temp = x;x =y;y = temp;}int main(void) {int a = 5;int b = 6;swap(a, b);//在函数调用时,引用被初始化x = a, y = b;cout<<"a="<<a<<" b="<<b<<endl;return 0;}
4.引用作为函数返回值
#include <iostream>using namespace std;//引用作为函数返回值//注意:不能返回对局部变量的引用int a[] = {0,1,2,3,4};int& index(int i){return a[i];}int main(void){index(3) = 100;//引用作为函数返回值,使得函数可以放在赋值运算符左边//函数返回引用,引用在函数返回的时候初始化//index(3)在函数返回的时候被初始化a[3]cout<<"a[3]="<<a[3]<<endl;return 0;}




0 0