FreeBASIC Cast
目次→言語リファレンス→変数とデータ型→データ型を変換→CAST←オリジナル・サイト
表現を、指定されたデータ型に変換します。
構文:
パラメータ:
datatype
組み込みデータ型(標準型)
expression
別のビルトインデータ型の変数
記述:
expression を別の
datatype に変換します。
datatype が不明で、
Type Alias に変換するときに、マクロで使うと便利です。
これは、
Cint や
Cdbl などの変換演算子の、一般的な形式です。
Cast は、より汎用性があります。組み込み
Cast operator を持つが、組み込みキーワードを持たない、組み込み型で使えるからです。例:
Cast( Byte, boolean )
また、変数の型が、コード内で固定されていない場合に使うのに適しています。たとえば、前に
Define されていたり、異なる変数や式の
Type of の場合です。
注意: 異なる型の
Pointer への変換専用に演算子を使う場合は、代わりに
Cptr を使うことを考えてください。
アップキャスト (下位(派生)クラスのオブジェクトを指す参照・ポインターなどを変換して、上位(基底)クラスのオブジェクトに対応する型にする): 継承構造では、アップキャスティングは、派生型の参照またはポインタを、基本型に変換します。
この特殊用途では、派生型インスタンス (
expression) に適用された
Cast は、基本型 (
datatype) 参照を戻すために、使うことができます。
Operator Cast メンバを使って、
Cast をユーザ定義型表現のために、多重定義できます。
例:
'' 整数直定数が、符号付き Byte に変換されるので、-128 が表示されるでしょう
'' (この Casting 操作は、CByte を使うのと同等です)
Print Cast( Byte, &h0080 )
'' 浮動小数点の値が Integer に変換されるので、3 が表示されるでしょう
'' (この Casting 操作は CInt を使うのと同等です)
Print Cast( Integer, 3.1 )
Sleep
'' macro sizeofDerefPtr(): 逆参照されたポインタのサイズを返す
#define sizeofDerefPtr(ptrToDeref) SizeOf(*Cast(TypeOf(ptrToDeref), 0))
'' macro typeofDerefPtr(): 逆参照されたポインタの型を返す
#define typeofDerefPtr(ptrToDeref) TypeOf(*Cast(TypeOf(ptrToDeref), 0))
' New で Double に動的メモリを割り当て
Dim As Double Ptr pd
pd = New typeofDerefPtr(pd)
*pd = 3.14159
Print *pd
' Callocate で Zstring*10 のために動的にメモリを割り当てる
Dim As ZString Ptr pz
pz = CAllocate(10, sizeofDerefPtr(pz))
*pz = "FreeBASIC"
Print *pz
Sleep
Delete pd
Deallocate(pz)
方言差:
- 別名__Castと共に参照をつけないと、-lang qb 方言で利用できません。
QBからの違い:
参照:
ページ歴史:2019-07-04 00:10:09
日本語翻訳:WATANABE Makoto、原文著作者:AntoniGual