当前位置:  开发笔记 > 编程语言 > 正文

新的第二个参数,c ++

如何解决《新的第二个参数,c++》经验,为你挑选了1个好方法。

在一个例子中,我看到了这一行

Thing *pThing = new (getHeap(), getConstraint()) Thing(initval());

没有解释,功能体或类定义.第二个参数是什么意思?



1> CB Bailey..:

这是'placement new'语法的一个实例.它用于将其他参数传递给自定义内存分配函数.

鉴于此:

Obj* pObj = new Obj;

对应于通过调用operator new类型的单个参数size_t和值来分配新内存sizeof(Obj),并在返回的内存位置构造一个新的Obj实例,

Obj* pObj = new (param1, param2) Obj;

对应于operator new使用三个参数调用一个,sizeof(Obj)然后在param1param2自定义的返回值所指向的内存中构造Obj实例operator new.

自定义operator news可以全局定义,也可以作为隐式静态类成员定义,在这种情况下,它们仅用于分配该类型或派生类型的类实例.

这个FAQ中有更多的方法和主题.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有