C++ —— 引用
简单概述:C++中的引用,通俗简单的说就是起别名。对引用的操作与其绑定的变量或对象的操作完全一致。
1. 基本用法——起别名
#include<iostream>
using namespace std;
int main(){
int Num = 0000;
cout<<"Num的原始值: "<<Num<<endl;
int &number = Num;
number = 52012121;
cout<<"number的值: "<<number<<endl;
cout<<"Num的修改值值: "<<Num<<endl;
return 0;
}
输出视图 注:此时变量Num和number所指向的内存块为同一个内存块,只是名称不一样。
2.作为函数的参数,防止拷贝本的产生,不会重新开辟内存,一定程度上提高了效率;形参是实参的别名 ,因此改变其形参的值其实就是改变了原有值。
#include<iostream>
using namespace std;
void Modify(int &a){
a = 1234;
}
int main(){
int a =1;
Modify(a);
cout<<a<<endl;
return 0;
}
运行截图 注:应用当中不能够传入一个常量。如:Modefy(123)是错误的用法。要满足:type &形参 = 实参。倘若要传入常量,只能用const加以修饰,但是此时所调用的函数不能够修改其值。法二:常引用的特定方式 void Modify(int &&a) 。
3.当做函数返回值使用,返回一个变量,增加左值使用,可以利用这种方式对返回值进行修改。
#include<iostream>
using namespace std;
typedef struct student{
string name;
int age;
int& getGge(){
return age;
}
}Student;
int main(){
Student stu = {"李华",23};
cout<<"修改前的年龄:"<<stu.age<<endl;
stu.getGge() = 222;
cout<<"修改后的年龄:"<<stu.age<<endl;
return 0;
}
运行截图 注:不能返回局部变量的引用。 引用的本质 在C++中,内部指针实现是一个常指针: type &name <==> type* const name,C ++编译器在编译过程中使用常指针作为引用的内部实现,因此所占用的空间大小与指针相同;从使用的角度,引用会让人误以为只是一个别名,没有自己的储存空间,这是C++为了实用性做的细节隐藏。
|