在指定的内存地址构造一个对象的操作符。
语法
result  = New(address ) datatype 
or 
result  = New(address ) datatype  ( initializers , ... )
or 
result  = New(address ) datatype [ count  ]
参数
address 
内存中的位置来构造。括号为不可选。
initializers 
变量的初始值。
datatype 
要构建的数据类型的名称。
count 
要构造的元素数。
 返回值
说明
Placement New操作符在指定的内存位置构造指??定的数据类型。
对于简单类型,如整数,可以给出初始值。对于没有
Constructors的类型,可以为每个字段指定初始值。具有构造函数的类型也可以通过
Placement New调用其构造函数。如果没有给出初始化器,那么这些类型的默认值将被设置。
使用
Placement New运算符时,内存赋值为
不.而是使用指定的
address 的内存。
在地址上调用
Delete是错误的。正确的方法是调用析构函数(如果存在(隐式地或显式地)),使用成员方法的语法通过使用成员访问运算符。
有关
placement new 的使用情况,请参见下面的示例。
指定
Any的初始值(如
New(address )datatype (Any)或
New(address )datatype [count ]{Any})不会初始化数据。这对于没有构造函数的数据类型(对于具有构造函数的数据类型,简单指针转换的语法,如
Cptr(datatype Ptr, address) )可以替代为无效使用New ... Any)。
 例子
''“放置新”的例子
Type Rational
    As Integer    numerator, denominator
    Declare Constructor ( ByVal n As Integer, ByVal d As Integer )
    As String ratio = "/"
End Type
Constructor Rational ( ByVal n As Integer, ByVal d As Integer )
    This.numerator = n
    This.denominator = d
End Constructor
Scope
   
    ''赋值一些内存来构造为Rational
    Dim As Any Ptr ap = CAllocate(Len(Rational))
   
    ''使该位置新建调用
    Dim As Rational Ptr r = New (ap) Rational( 3, 4 )
   
    ''你可以看到,地址是一样的,只是在编译器中有不同的类型
    Print ap, r
   
    ''确认一切都没事
    Print r->numerator & r->ratio & r->denominator
    
    ''删除不得与展示位置一起使用
    ''如果析构函数存在(隐式或明确地),则必须明确地进行破坏
    ''(在这个例子中,var-string成员引发一个隐式的析构函数)
    r->Destructor( )
    
    ''我们明确赋值,所以我们明确地赋值
    Deallocate( ap )
    
End Scope
 方言差异
与QB差别
参考