所谓暂时对象就是一种无名对象。

它的出现假设不在程序猿的预期之下(比如不论什么pass by value操作都会引发copy操作,于是形成一个暂时对象),往往照成效率上的负担。

但有时候能够制造一些暂时对象,却又使程序干净清爽的技巧。

刻意制造暂时对象的方法是。在型别名称之后直接加一对小括号,并可指定初值,比如int(8),其意义相当于调用对应的constructor,且不指定对象名称。STL最常将此技巧应用于仿函数与算法的搭配上。

比如:

#include <vector>

#include <algorithm>

#include <iostream>

using namespace std;

template <typename T>

class print

{

public:

voidoperator()(const T& elem)

{

cout<< elem << ' ';

}

};

int main(int argc, char* argv[])

{

intia[6] = {0,1,2,3,4,5};

vector<int>iv(ia,ia+6);

for_each(iv.begin(),iv.end(),print<int>());

}

最后一行便是产生“class template 具现体”print<int>的一个暂时对象。这个对象被传入for_each()之中起作用。当for_each()结束时。这个暂时对象它结束了它的生命。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/yxwkf/p/4677104.html

C++生产和使用的临时对象相关推荐

  1. 提高C++性能的编程技术笔记:临时对象+测试代码

    类型不匹配:一般情况是指当需要X类型的对象时提供的却是其它类型的对象.编译器需要以某种方式将提供的类型转换成要求的X类型.这一过程可能会产生临时对象. 按值传递:创建和销毁临时对象的代价是比较高的.倘 ...

  2. golang的临时对象池sync.Pool

    今天在写码之时,发现了同事用到了sync.pool.因不知其因,遂Google之.虽然大概知道其原因和用法.还不能融汇贯通.故写此记,方便日后查阅.直至明了. 正文 在高并发或者大量的数据请求的场景中 ...

  3. C++对象模型9——临时对象的生命周期、模板及实例化分析、内联函数

    一.临时对象的生命周期 T c=a+b 假设T是一个类型,那么上述代码执行时,首先会产生一个临时对象用来存放a+b的结果(拷贝初始化临时对象),然后用该临时对象拷贝初始化c,最后临时对象被释放.如果开 ...

  4. C++编程进阶8(最好不要实现类型转换运算符、单形参的构造函数与类型转换、临时对象与RVO)

    二十九.最好不要实现类型转换运算符 示例代码 class fraction { public:fraction(int numerator=0, int denominator=1);operator ...

  5. 临时对象与NRV技术

    临时对象与NRV技术 <More Effective C++>中讲到,在C++中真正的临时对象是看不见的,它们不出现在你的源代码中.建立一个没有命名的非堆(non-heap)对象会产生临时 ...

  6. Gotchas 44-引用和临时对象

    摘要: 1)"引用必须用左值来初始化"基本上着意味着引用的初始化物必须具有一个地址,也有一个值(→常见错误6).不过谈及指向常量的引用时,事情就开始变得复杂了.指向常量的引用仍然必 ...

  7. std::ostringstream::str()返回临时对象

    取得std::ostringstream里的内容可以通过str()和str(string&)成员函数.由于str()返回的是临时对象,因而会有如下误用: const char *  pBuff ...

  8. 第八天2017/04/17(1、拷贝构造、❤临时对象)

    调用拷贝构造函数的三种case 1. MyPoint p2 = p1; MyPoint p2(p1);case1中的重点:MyPoint p3 = MyPoint(3,3); //此时:C++编译器进 ...

  9. C++之临时对象的构造与析构

    1.临时对象产生的时间点 对象作参数(值传递).返回对象(值传递) 2.临时对象析构的时间点(重点.难点) 3.临时对象会降低效率,但是哪些情况必须使用临时对象? [注]真正的临时对象是看不见的,它不 ...

  10. 探讨“临时对象”(temporary object)

    2019独角兽企业重金招聘Python工程师标准>>> MSDN中对VS2012版本的临时对象的说明如下: 在某些情况下,编译器有必要产生临时对象.     当初始化一个 常量引用 ...

最新文章

  1. 手机直播系统源码搭建说明
  2. 从零开始的51单片机——VsCode+EIDE环境搭建
  3. 找软件开发开发工作_将求职变成开发项目
  4. 30篇「CVPR2020」最新论文抢先看!看计算机视觉2020在研究什么?
  5. Python wxpy通过ModBus控制电脑鼠标和键盘
  6. 深度学习中的梯度下降算法
  7. 理解Rails真实性令牌
  8. STC89C51单片机串口程序下载失败总结
  9. 《博弈论全家桶》(ACM / OI)(超全的博弈论 / 组合游戏大合集)
  10. matlab计算中值 众值,基于GPS运动摄像机数据确定道路圆曲线半径及行车视距的方法与流程...
  11. 简易地图(MKMapView,CLLocationManagerDelegate,CLGeocoder)
  12. 面向对象版学员管理系统(存储数据库)
  13. js练习题:对象字面量的形式创建一个名字为可可的狗对象
  14. 手机谷歌翻译位置服务器,谷歌翻译更新手机端App:中国用户可无障碍使用
  15. c语言链表拆分,P2 拆分链表
  16. 计算机基础教育对工科学生的意义,深入进行高校工科非计算机专业计算机基础教育改革…...
  17. spring拦截器传递传递参数到controller+Aop切面环绕方法传递参数到目标方法
  18. intel NVME SSD 性能 P5600 P5510 P5520
  19. django+ajax
  20. 四:BeanFactory来获取bean对象

热门文章

  1. python django框架 比php_django 第一感觉对比 php 各大框架
  2. shell应用之简单计算器
  3. 浙江大学的”程序设计入门-C语言课程“截图
  4. Js判断当前浏览者的操作系统
  5. Json 转换 1 转成 true 0 转成false
  6. struts2整合spring3整合成功但是spring无法注入
  7. 从aspx后台页面向浏览器输出js文件
  8. 分组在re模块中的使用
  9. Hibernate学习资源
  10. ASP 读取Word文档内容简单示例