BASE(初始化器)
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgBaseInit
- 最后更新: 2023-07-09
在派生 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 Constructorend 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 Constructorend GeSHi
方言差异
- 方法仅在 -lang fb 方言中受支持,因此
Base在其他方言中没有功能。
与 QB 的差异
- FreeBASIC 新增特性
另请参阅
Base(成员访问)ThisTypeExtendsExtends ZstringExtends WstringOption Base
返回 目录