Skip to content

BASE(初始化器)


在派生 UDT 的构造函数中为基础 UDT 指定初始化器

语法

base ( constructor-parameters... )

or:
base ( UDT-initializers... )

说明

Base 初始化器可用于派生 UDT 构造函数的顶部。它允许指定显式构造函数调用或用于初始化基础对象的 UDT 初始化器。它将替换隐式默认初始化,并且必须出现在使用它的构造函数中任何其他语句之前。

注意:与 "Base( )" 不同,"Base (member access).Constructor( )" 语句不会替换派生 UDT 构造函数的隐式默认初始化,通常也不能合法使用,因为这会导致对基础对象进行两次构造函数调用(对于扩展内置 Object 类型的继承结构,第二次基础构造函数调用也可能破坏虚表指针,使其指向基类类型的虚表而不是当前类型的虚表)。

示例

start GeSHi

vb
Type SimpleParent
    As Integer a, b, c
End Type

Type Child extends SimpleParent
    Declare Constructor( )
End Type

Constructor Child( )
    '' Simple UDT initializer
    Base( 1, 2, 3 )
End Constructor

end GeSHi

start GeSHi

vb
Type ComplexParent
    As Integer i
    Declare Constructor( ByVal As Integer = 0 )
End Type

Constructor ComplexParent( ByVal i As Integer = 0 )
    This.i = i
End Constructor

Type Child extends ComplexParent
    Declare Constructor( )
    Declare Constructor( ByRef As Child )
End Type

Constructor Child( )
    '' Base UDT constructor call
    Base( 1 )
End Constructor

Constructor Child( ByRef rhs As Child )
    '' Base UDT constructor call
    Base( rhs.i )
End Constructor

end GeSHi

方言差异

  • 方法仅在 -lang fb 方言中受支持,因此 Base 在其他方言中没有功能。

与 QB 的差异

  • FreeBASIC 新增特性

另请参阅

  • Base(成员访问)
  • This
  • Type
  • Extends
  • Extends Zstring
  • Extends Wstring
  • Option Base

返回 目录

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系