有关c++primer中类对象数组和vector

laozi888 2008-11-11 09:59:53
在c++primer第14章中有这样一段代码
new (p+offset*ix)Account(init_values[ix].first,init_value[ix].second)
,源代码太长,我就没打了。
我看的是第三版的,这段代码在p584页,希望大家帮我看看可以么?谢谢大家了
...全文
116 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
机智的呆呆 2008-11-12
  • 打赏
  • 举报
回复
placement new~~~~~
once_and_again 2008-11-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Demon__Hunter 的回复:]
placement new~~~~~
[/Quote]标准的开始<new>由一个特别的操作符new来定义,这个就是我们熟知的placement new。和其他普通的new不同的是,它在括号里多了另外一个参数。比如:
Click here to find out more! <a href="http://ad.cn.doubleclick.net/click%3Bh=v8/34b0/3/0/%2a/l%3B58090867%3B0-0%3B0%3B6694709%3B31-1/1%3B19060478/19078373/1%3B%3B%7Esscs%3D%3fhttp%3a%2f%2fwww.site.com" target="_blank"> <img src="http://m1.2mdn.net/123456/banner.gif" width="468" height="60" border="0" /> </a>

Widget * p = new Widget; //ordinary new //普通的new pi = new (ptr) int;
pi = new (ptr) int; //placement new

括号里的参数是一个指针,它指向一个内存缓冲器,placement new将在这个缓冲器上分配一个对象。Placement new的返回值是这个被构造对象的地址(比如扣号中的传递参数)。placement new主要适用于:在对时间要求非常高的应用程序中,因为这些程序分配的时间是确定的;长时间运行而不被打断的程序;以及执行一个垃圾收集器 (garbage collector)。
jainibunan 2008-11-11
  • 打赏
  • 举报
回复
楼上说的对....
liumingrong 2008-11-11
  • 打赏
  • 举报
回复
在地址p+offset*ix处创建Account对象

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧