C++中函数返回临时对象和本地对象的区别
来源:互联网 发布:如何提高免疫力 知乎 编辑:程序博客网 时间:2024/04/29 06:12
C++中函数返回临时对象和本地对象的区别
By qianghaohao(CodeNutter)
在C++中如果函数返回值是对象的时候,那么该直接返回临时对象呢,还是先在函数体内构造好一个本地
对象,然后返回。如果可以直接返回临时对象,那么我们就返回临时对象来代替返回本地对象,因为这样代码
的效率会比返回本地对象的效率高。以下通过代码说明两者的区别(更多讲解在注释中已说明):
1.返回本地对象代码示例:
#include <iostream>using namespace std;class A {public:int m_k;int m_t;A(int k, int t) :m_k(k), m_t(t) {cout << "construct...." << endl;}~A() {cout << "destruct...." << endl;}A(A &a) {cout << "copy construct..." << endl;}};// 如果函数返回值是一个对象,要考虑return语句的效率A getObj() { /************** 返回本地对象 ****************/ /* 以下这种写法实际上执行了三步: 1. 构造本地对象a 2. 调用拷贝构造,将本地对象a拷贝到外部存储器 3. 调用析构函数析构本地对象a */ /******************************************/A a(3, 4);return a;}int main() {getObj(); // 外部存储单元return 0;}运行结果:
2.返回临时对象代码示例:
#include <iostream>using namespace std;class A {public:int m_k;int m_t;A(int k, int t) :m_k(k), m_t(t) {cout << "construct...." << endl;}~A() {cout << "destruct...." << endl;}A(A &a) {cout << "copy construct..." << endl;}};// 如果函数返回值是一个对象,要考虑return语句的效率A getObj() {/*********** 直接返回临时对象 *************/// 编译器直接把临时对象创建并初始化在外部// 存储单元(主调函数的栈帧上)中,省去了拷// 贝和析构的花费,提高了效率/*****************************************/return A(3, 4); }int main() {getObj(); // 外部存储单元return 0;}运行结果:
所以总的来说返回临时对象能减少多余的拷贝构造函数和析构函数的调用,从而提高了效率。
1 0
- C++中函数返回临时对象和本地对象的区别
- C++中函数返回临时对象和本地对象的区别
- 函数的返回值和临时对象的问题
- C++ 中临时对象 和 const 对象 的一个区别
- 函数返回对象和返回对象的引用的区别
- 临时对象和局部对象以及函数返回值优化
- 临时对象作为函数返回值返回的分析
- 类成员函数返回对象和返回引用的区别
- 关于C++中在函数中按值返回、临时对象、拷贝构造函数的一点理解
- 为什么不能从子函数中返回临时对象的指针和引用,却可以返回一个临时变量的值
- 浅解返回值式的函数中临时对象的问题
- 返回临时对象时的拷贝构造函数问题
- 函数返回的临时对象为const类型,const引用
- C++调用函数是如何返回临时对象的
- more effective c++(临时对象的返回值优化)
- java中返回临时对象的问题,求大神破解
- js中本地对象,内置对象和宿主对象的区别
- 返回对象和返回对象的引用的区别
- 【egret】Tween类
- Android Studio的自动提示功能忽略大小写敏感
- php 计算出一年中每周的周一日期
- 15 获取运行时的style 属性值
- codeforces 618D. Hamiltonian Spanning Tree
- C++中函数返回临时对象和本地对象的区别
- 数组
- 项目实战--项目介绍
- centos7 安装ssh扩展控制linux
- STL中提供-二分查找算法(binary_search lower_bound upper_bound equal_range)
- ARM上电取第一条指令流程
- poj2632 Crashing Robots
- c#学习历程2
- 编程之美读书笔记-一摞烙饼的顺序