如何新的工作机制

该赋值 表达式 (包含 运算符的表达式 (执行三个操作:

  • 找到并将分配的对象的保留存储。 在此阶段完成时,分配正确的数量存储,但是,它不是对象。

  • 初始化对象。 在初始化完成的,足够的信息存在为了分发存储区可以是对象。

  • 返回指向从 新类型名称类型名称派生的指针类型的对象。 程序使用此指针访问最近分配的对象。

运算符调用函数 operator new。 对于任何类型的数组而不是 、 struct或 联合 类型的对象,全局函数, :: new 运算符,调用分配存储区。 类类型的对象能定义自己每个类的基础自己的 operator new 静态成员函数。

当编译器遇到 运算符分配类型 type对象时,该问题对 type**:: 新运算符 (sizeof (** type ) ; 或者,如果用户定义的 operator new 未定义, :: 新运算符 (sizeof ( type )。 因此, 运算符可以分配正确的数量的对象的内存。

备注

operator new 的参数是类型 size_t。此类型在 DIRECT.H、 MALLOC.H、 MEMORY.H、 SEARCH.H、 STDDEF.H、 STDIO.H、 STDLIB.H、 STRING.H 和 TIME.H. 定义。

语法中的一个选项卡 位置的 规范 (对于 new 运算符参见语法)。 位置 参数可用于 operator new的用户定义的实现只使用;它允许额外的信息。 operator new中传递。 一个 位置 字段的表达式例如 T *TObject = new ( 0x0040 ) T; 转换为 T *TObject = T::operator new( sizeof( T ), 0x0040 ); ,如果类 T 具有新成员的运算符,否则为 T *TObject = ::operator new( sizeof( T ), 0x0040 );。

位置 字段的原始视图将允许硬件相关的对象分配在用户指定的地址。

备注

尽管上面在 位置 字段只显示一个参数,而不必更改多少额外参数的限制可以传递给 operator new 此类。

即使 operator new 为类类型定义,可以使用此示例,的窗体全局运算符可用于:

T *TObject =::new TObject;

对全局 运算符的范围解析运算符 (::) 强制使用。

请参见

参考

新运算符(C++)