操作符,动态赋值内存并构造指定类型的数据。
语法
用法
参数
size
要赋值的字节数
initializers
变量的初始值。
datatype
要创建的数据类型的名称。
count
要赋值的元素数量。
返回值
说明
New操作符动态赋值内存并构造指定的数据类型。对于简单类型,如整数,可以给出初始值。对于没有构造函数的类型,可以为每个字段指定初始值。具有构造函数的类型也可以通过
New调用其构造函数。如果没有给出初始化器,那么这些类型的默认值将被设置。
New[]是
New运算符的阵列版本,并为指定数量的对象赋值足够的内存。类型的默认构造函数将用于设置每个项目的初始值。
使用
New创建的对象必须使用
Delete来释放。使用
New[]赋值的内存必须使用阵列版本
DeleteDelete[].您不能混合和匹配不同版本的运算符。
指定
Any的初始值,如
New datatype (Any)中将为该类型赋值内存,但不会初始化数据。这只对没有构造函数的数据类型有效(对于具有构造函数的数据类型,具有指针转换的简单内存赋值的语法,如
Cptr(datatype Ptr, Allocate(Sizeof(datatype))) )可替代为无效使用New ... Any)。
指定
Any的初始值(如
New datatype [count ]{Any})将为阵列赋值内存,但不会初始化数据。这对于没有构造函数的数据类型(对于具有构造函数的数据类型,具有指针转换的简单内存赋值的语法,如
Cptr(datatype Ptr, Allocate(count * Sizeof(datatype))) )可以替代为无效使用New ... Any)。
例子
Type Rational
As Integer numerator, denominator
End Type
Scope
'创建并初始化“理性”并存储其地址。
Dim p As Rational Ptr = New Rational(3, 4)
Print p->numerator & "/" & p->denominator
'摧毁理性,把系统记忆回来。
Delete p
End Scope
Scope
'为100个整数赋值内存并存储第一个内存的地址。
Dim p As Integer Ptr = New Integer[100]
'为数组中的整数赋值一些值。
For i As Integer = 0 To 99
p[i] = i
Next
'释放整个整数数组。
Delete[] p
End Scope
方言差异
与QB差别
参考