C++引用

概念

C++的引用本质就是对已经存在的对象的别名,引用提供了一种方便的方式来操作对象,而不需要复制对象本身。引用在编译器层面实现,通常用指针来实现引用。而且是指针常量,也就意味着该指针的指向是不能变的。

注意事项

1.初始化

引用在声明时必须进行初始化且初始化后不能发生改变

int a = 10;
int &b; //错误,没有进行初始化
int &b = a; //初始化
int c = 20;
b = c; // 此时并不是再为c起别名,而只是一种赋值操作,此时a,b,c都等于20,
//其中a和b是同一块内存空间
2.引用作为函数参数

引用常用于函数参数传递,可以通过引用在函数内部修改传递的参数的值,这种方式不需要通过指针传递或返回值来修改值的修改,同时可以避免对象的复制

int swap(int &a,int &b){
    a = a^b;
    b = a^b;
    a = a^b;
    
    //或者也可以:
    //a = a+b;
    //b = a-b;
    //a = a-b;
    
}
int a = 10;
int b = 20;
swap(a,b);
3.引用作为返回值

引用也可以作为函数的返回值,允许函数返回一个引用类型的对象,但需要注意返回引用时,应确保被引用对象生命周期足够长,避免返回一个已经销毁的对象引用

例如下面这段代码用static关键字定义了一个静态变量,存在全局区就不会在函数执行完后就销毁

int& test(){
    static int a = 10;
    return a;
}
int main(){
    cout << test() << endl; //10
    int& ref = test();
    cout << ref << endl; //10
    //此时函数调用也可以作为左值(如果函数的返回值是引用)
    test() = 1000;
    cout << ref << endl; // 1000
    cout << test() << endl; // 1000
    system("pause");
}
4.常量引用

常量引用一般是用来修饰形参,防止误操作

形式就是在函数列表中,可以加const修饰形参,防止形参更改实参。

int& ref = 10;//错误操作,引用必须是一块合法的空间,此时10并没有空间
const int& ref = 10;//合法,等价于int tmp = 10,const int& ref = tmp;
//不过此时已经拿不到原名了,只能操作别名ref,并且不能更改,为只读
ref = 20; //表达式必须是可修改的左值
​
//不过常用的场景为下述
void showValue(const int& val){ //防止误操作修改,不用值传递是因为避免使用额外空间
    cout << val << endl;
}
val = 10;
showValue(val);
​
​
  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值