C++学习笔记----2、使用C++进行优雅编程(八)---- 指针与引用

        在刚开始写C++学习笔记时,有一篇有关指针与引用的文章,其实文章很短,我直接把内容粘贴过来:

        1、在传统C/C++中,对于在参数中合理使用指针还是引用主要是看谁拥有内存,如果与之相关的对象需要用它来释放内存,则需要使用指针,如果它不需要释放内存,则使用引用会更好一些。

        我们今天再详细地解释一下这两者,在优雅编程中,有一个指导原则:尽量使用引用而不是指针。

        大家可能有点儿犯晕,尤其是对于从C过来的C++学习者,他们会说,到现在为止,我都不知道引用是干什么的,怎么用,C++从C继承过来的指针不是把所有问题都解决了吗?为什么还要创造出来引用这个东东呢?你说的也不错,还是那句老话,历史车轮滚滚向前,你要囿于固有知识与观念,你不落后谁落后,你不挨打谁挨打,挨打之后可别说我没有告诉你,引用的出现一定有其道理,在很多场景下将对指针的使用修改为对引用的使用,好处大大的!

        首先,引用比指针更安全,因为它不直接处理内存地址,不能为nullptr;其次,引用比指针看起来更令人赏心悦目,因为它使用了与堆变量相同的语法,不需要用显示地使用&取指针、用*取值;比较容易使用,所以在优雅编程中再加上这样一个大法器岂不是能量倍增,元气满满。不幸的是有些程序员一看到参数中带&就认为被调函数就要修改该对象的值了,如果没有看到&就认为是值传递。他们认为你看这多简单,干吗要引入引用,使用引用的话,我根本不知道你是否要修改对象的值,除非我到被调函数中去看。其实这种想法是错的,传递指针并不意味着要对对象进行修改,因为参数可以是const T*。传递指针与引用,可能会对对象进行修改,也可能不会,这两者与对象修改不构成因果关系。要看你传递的是const T*,T*,const T&,T&,要到函数原型中去看传递的参数类型才会知道。

        另一个好处就是引用声明了内存的属主。如果你写了一个函数,另一个程序员给对象传入了一个引用,很明显你可以读也可以修改这个对象,但是无法简单地释放其内存,也不需要释放。但是如果传一个指针过来,就没有那么明确了,你要不要删除对象释放内存呢?或者是调用者去做这件事。现代C++中,意思非常明确,任何原始指针都是无属主的,处理属主与传递属主都要使用智能指针,我们后面学习的时候再详细介绍吧。

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值