如何新的工作机制
该赋值 表达式 (包含 新 运算符的表达式 (执行三个操作:
找到并将分配的对象的保留存储。在此阶段完成时,分配正确的数量存储,但是,它不是对象。
初始化对象。在初始化完成的,足够的信息存在为了分发存储区可以是对象。
返回指向从 新类型名称 或 类型名称派生的指针类型的对象。程序使用此指针访问最近分配的对象。
新 运算符调用函数 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;
对全局 新 运算符的范围解析运算符 (::) 强制使用。