对函数返回形式及传参方式的简单理解(实例)

来源:互联网 发布:经济管理类书籍 知乎 编辑:程序博客网 时间:2024/06/07 13:13

 

函数可以返回值、引用和常量引用,其中返回常量引用与返回引用区别不大(惟一的区别就是前者返回结果是一个不能变化的对象引用)。

 

我们可以通过以下几个例子来理解返回值和返回引用的区别。

例1


输出结果 b: 1
函数返回一个值,该值会由形式参数复制到调用函数的环境中,因此改变a的值并不会影响b的值。

 

例2

输出结果 b: 2
函数返回引用,返回的结果是指向形式参数的引用,因此改变a的值会同时反映的b上。

 

 

上面两个例子改变一下传参的方式,会有不同的输出结果

例3

输出结果 b: 273185728
如前一篇的函数传参一文中所述,在调用Func函数前会调用A的构造函数将实际参数拷贝到形式参数,调用函数结束时,会调用A的析构函数释放形式参数。由于函数返回形式参数的引用,而形式参数又被释放掉了,因此这里的输出结果不是1。

 

例4

输出结果 b: 1
这里由于函数Func是返回值而不是引用,函数在返回时会把返回结果复制到调用函数的环境中,因此尽管形式参数会被释放掉,但对返回结果并没有影响,所以输出结果还是1。

 

初学C++,可能理解的不够到位,欢迎各位指正。有更好的例子也欢迎大家提出来讨论讨论,呵呵。

原创粉丝点击