文章目录
C++的引用是一个非常方便的用法,它可以给一个变量取别名,而又不是简简单单的赋值操作,而是相当于编译器自动会创建一个指针常量来指向需要被引用的变量,而指向之后就没办法发生,就不能再引用其他变量了。
int a=10;int &b=a;int c=100;
会等于》int *const b=&a;
如果再&b=c这就是非法操作了
b=c是成立的,因为这是简单的赋值操作
在内部相当于*b=c;
只不过这些操作都是编译器帮你做好了
这里可以举几个实例
①引用作为函数的参数进行传递
#include <iostream>
using namespace std;
void changeNum(int &a,int &b){
int temp;
temp=a;
a=b;
b=temp;
}
int main(){
int a=100;
int b=200;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
changeNum(a,b);
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
return 0;
}
熟悉指针操作的就会看出这里的引用的作用就相当于指针,对指针内部的数据进行操作也会达到相同数值调换的作用
②引用作函数的返回值
#include <iostream>
using namespace std;
int &func(int &p){
return p;
}
int main(){
int a=100;
int b=200;
cout<<"a="<<a<<endl;
func(a)=300;
cout<<"a="<<a<<endl;
return 0;
}
这里看到函数可以作为左值来赋值,这再C语言里是非法的,但在C++中如果返回值是引用类型的变量则是合法的。
③当数据被函数引用时,如果不想被改变,可以使引用变量再加一个const,这样可以防止误操作
#include <iostream>
using namespace std;
int &func(const int &p){
return p;
}
int main(){
int a=100;
int b=200;
cout<<"a="<<a<<endl;
func(a)=300;
cout<<"a="<<a<<endl;
return 0;
}