函数返回对象和对象的生命周期的结合

来源:互联网 发布:mac os x 10.13.1 cdr 编辑:程序博客网 时间:2024/06/05 20:31

函数在返回自定义类型时,我们知道主调函数会为返回值开辟一个临时内存来存储这个返回值对象,但是在返回对象的时候也有一些特殊的情况,Main函数不会为返回的对象开辟内存。虽然在写代码的时候不会这样写,但是需要学会相关的分析,解决一些不能理解的现象:为了便于复习,写成博客。

有兴趣的同行可以对以下图片无损放大查看:


可以看见在对象的函数传参和返回值是一个对象时,如果不注意将产生多次的构造、拷贝构造、析构函数的调用,不断的函数参数的压栈、函数的栈帧的回退,这将极大的降低我们程序的效率!所以为了避免这些事情发生,有以下的三点的编程建议用于函数对象的传参和返回值

1、函数传参数的时候尽量传递引用
2、返回值的时候尽量返回临时对象
3、接收返回值的时候尽量以初始化一个变量接收该返回值