操作符 New
 
操作符,动态赋值内存并构造指定类型的数据。

语法
用法

result = New datatype
or
result = New datatype ( initializers , ... )
or
result = New datatype [ count ]

参数

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差别

  • 新的FreeBASIC

参考