关于C++引用方面的学习笔记

今天上C++课,学习了C++中关于引用的知识,可以说是收获不少。为什么这么说呢,因为引用给了我一个解决一个困惑的很好的方法。

先来说说我对引用的理解吧。其实引用就是一种指针,只不过引用变量保存的地址是一个常量,无法更改。就像老师说的,int& a=b其实等价于int& const a=b,const不过是被省略罢了。所以说,a始终是储存着b的地址,因此实际上a就等同于b,或者说a不过是b的一个别名罢了。

也正是因为a的地址是固定不变的了,因此我们在之后写a=c,a=5的时候,实际上并不是修改a的地址。这与指针很不一样,如果a是一个指针变量,那么我们若是想要给a赋值,则必须要写*a=xx,如果写a=xx的话就会使a指向另一个地址了,甚至会发生不可思议的错误。

因此,使用引用无疑是比指针更为方便。那么引用又给我解决了一个什么困惑呢?

那就是我之前写函数,很喜欢写全局变量。这是因为我的函数体里往往要对多个数据进行处理,而return返回值又只能返回一个,这样就造成了函数的功能在我手里大大折扣了,我编程的效率也因此很低。这本来并不是一个问题,因为指针同样可以解决这个问题,可我当时对指针由比较排斥,又不是学得特别好,所以就一直采用全局变量这种愚蠢的方式来编程了。

而引用与传递形参相比,还有一个好处。那就是传递形参的时候其实在函数内要为形参创建一个空间,这无疑会加重程序运行的负担,尤其是对较大型的程序。而引用是与原本那个变量共享一个地址,共享同一数据,因此也就不存在这个问题了。而至于读写权限,我们可以在这样写:const int& a=b,这样把const写在前面的意思就是让a的数值也变成常数了,这样就同样可以达成只读不写了。

发表评论

电子邮件地址不会被公开。