C++生产和使用的临时对象
所谓暂时对象就是一种无名对象。
它的出现假设不在程序猿的预期之下(比如不论什么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()结束时。这个暂时对象它结束了它的生命。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
C++生产和使用的临时对象的更多相关文章
- 【编程篇】C++11系列之——临时对象分析
/*C++中返回一个对象时的实现及传说中的右值——临时对象*/ 如下代码: /**********************************************/ class CStuden ...
- SQL Server 内置函数、临时对象、流程控制
SQL Server 内置函数 日期时间函数 --返回当前系统日期时间 select getdate() as [datetime],sysdatetime() as [datetime2] getd ...
- 认识C++中的临时对象temporary object 分类: C/C++ 2015-05-11 23:20 137人阅读 评论(0) 收藏
C++中临时对象又称无名对象.临时对象主要出现在如下场景. 1.建立一个没有命名的非堆(non-heap)对象,也就是无名对象时,会产生临时对象. Integer inte= Integer(5); ...
- C++中临时对象的学习笔记
http://www.cppblog.com/besterChen/category/9573.html 所属分类: C/C++/STL/boost 在函数调用的时候,无论是参数为对象还是返回一个对 ...
- C++ 临时对象
1.什么是临时对象? swap方法中,常常定义一个temp对象,这个temp对象不是临时对象,而是局部对象.这里所说的临时对象是不可见的,在原代码中是看不到的. 2.为什么会产生临时对象? a.客户期 ...
- 【M19】了解临时对象的来源
1.首先,确认什么是临时对象.在swap方法中,建立一个对象temp,程序员往往把temp称为临时对象.实际上,temp是个局部对象.C++中所谓的临时对象是不可见的,产生一个non-heap对象,并 ...
- STL——临时对象的产生与运用
所谓临时对象,就是一种无名对象.它的出现如果不在程序员的预期之下(例如任何pass by value操作都会引发copy操作,于是形成一个临时对象),往往造成效率上的负担.但有时候刻意制造一些临时对象 ...
- [转] C++中临时对象及返回值优化
http://www.cnblogs.com/xkfz007/articles/2506022.html 什么是临时对象? C++真正的临时对象是不可见的匿名对象,不会出现在你的源码中,但是程序在运行 ...
- 10、SQL Server 内置函数、临时对象、流程控制
SQL Server 内置函数 日期时间函数 --返回当前系统日期时间 select getdate() as [datetime],sysdatetime() as [datetime2] getd ...
随机推荐
- 用Javascript评估用户输入密码的强度(Knockout版)
原文:用Javascript评估用户输入密码的强度(Knockout版) 早上看到博友6点多发的一篇关于密码强度的文章(连接),甚是感动(周末大早上还来发文). 我们来看看如果使用Knockout更简 ...
- HashMap源码解读(转)
http://www.360doc.com/content/10/1214/22/573136_78188909.shtml 最近朋友推荐的一个很好的工作,又是面了2轮没通过,已经是好几次朋友内推没过 ...
- ecshop 后台批量上传商品 完整上传
ecshop 后台批量上传商品,之所以无法上传,是因为后台上传php文件方法中没有导入商品原图路径 将ecshop根目录中的admin/goods_batch.php文件全部修改为 <?php ...
- java.lang.NullPointerException错误分析
java.lang.NullPointerException是什么错误 你使用了空的指针.在java中虽然号称抛弃了C++中不安全的指针,但其实他所有的东西你都可以理解为指针.这种情况一般发生在你使用 ...
- PHP 字符串正则替换函数preg_replace使用说明
1. preg_replace() $msg = preg_replace("/<style>.+<\/style>/is", "", ...
- Andriod开发之浏览器开发(WebView)
1.创建一个WebView在XML文件 <WebView android:id="@+id/webView" android:layout_width="match ...
- jQuery回到顶部插件jQuery GoUp
插件描写叙述 jQuery GoUp!是一个简单的jQuery插件,让你的网页用户直接回到顶部. 用法很easy 引用jquery库和jquery.goup.min.js到你的页面 <scrip ...
- Android 基于Netty接收和发送推送解决方案的消息字符串(三)
在上一篇文章中<Android 基于Netty的消息推送方案之概念和工作原理(二)> .我们介绍过一些关于Netty的概念和工作原理的内容,今天我们先来介绍一个叫做ChannelBuffe ...
- SlopOne推荐算法
在开源框架taste中有SlopOne的Java实现,效果不错.使用movielens的数据,代码例如以下 代码 #coding:utf-8 import re import math #读取数据,并 ...
- 谷歌技术面试要点(Google面试)(14年5月20日交大专场)
技术面试的主题 1.简要自我介绍: 姓名.学校.专业 做过的项目与实习 个人主要成就 2.技术评估: 构建与开发算法 编程 计算机基础知识 数据结构 现实世界问题解决能力 设计问题(主要针对博士生) ...