引用&
引用本质在C++内部实现是一个指针常量,在初始化以后无能再修改
和对指针时初始化时获取变量地址不同,这里&用于在声明时,表明声明的参数的引用。
#include <iostream>
using namespace std;
int main()
{
int num1 = 10;
int &num2 = num1;//num2是num1的引用,和num1一样指向同一块内存地址
num2 = 20;//修改num2的值以后,num1的值也会被改变,因为两者的内存地址是一样的
cout << num1 << endl;
return 0;
}
20
注:从上例可以看到,这种场景中,引用就是脱裤子放屁,真正的应用场景是作为函数实参。
引用作为函数实参
可以做到和指针的地址传递效果一样,可以在函数中对实参直接修改。
C++推荐采用引用的技术,因为语法简单(调用时和值传递一样),但其本质确实指针操作,故而和指针传递一样高效。
#include <iostream>
using namespace std;
void swap(int& num1,int& num2){
int temp = num1;
num1 = num2;
num2 = temp;
}
int main()
{
int num1 = 10;
int num2 = 20;
swap(num1, num2);//这里表面上是值传递,其实函数声明的是引用传递
cout << num1 << endl;
cout << num2 << endl;
return 0;
}
20 10
如果不想实参被影响,又不想进行值传递(拷贝造成资源浪费),那么也可以对引用进行const修饰:
#include <iostream>
using namespace std;
void print(const int& num1){
//引用加上了const,就不能进行赋值操作了,只能读,实现值传递的效果且兼具地址传递的高效
cout << num1 << endl;
}
int main()
{
int num1 = 10;
print(num1);
return 0;
}