FreeBASIC マニュアルのトップに戻る

FreeBASIC ConstMember

目次→命令文→手続きCONST (Member)←オリジナル・サイト

CONST (メンバー) 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

メンバー手続きが、書き込み禁止である、と指定します。

構文:
Type typename
End Type

Const Sub|Function|... typename ...
...
End Sub|Function|...

記述:
メソッドが、それが呼ばれるオブジェクトを変更しないことを明示します。
隠された This パラメーターは、読み取り専用となります。
宣言は、「const メソッドの起動は、オブジェクトを変更しないと約束します。」と読むことができます。
そして、コンパイラーは、メンバー手続きが、データ項目のいずれかを変更しようとするか、非 const メンバー手続きを呼ぶ場合、エラーとなります。

読み出し専用 (Const) 宣言は、「変更しない約束」と解釈できる、型安全の指標です。
コンパイラーは、const宣言を、変数とパラメーターに対する操作をチェックし、それらのデータが変えられる可能性がある場合、コンパイル時にエラーを発生させるために、使います。
Const 修飾語を使うための実行時オーバーヘッドはありません。全てのチェックが、コンパイル時に、なされるからです。

構築子と破壊子は、Const にはなりえません。(使えない)
メンバー手続きは、ConstStatic の両方にはなりえません。静的メンバー手続きには、隠れた This パラメータがないからです。

宣言に、Const を持つメソッドは、Const を対応するメソッド本体で指定することもできます。コードを読みやすく改善できます。

例:
'' Constメンバー手続き

Type foo
  x As Integer
  c As Const Integer = 0
  Declare Const Sub Inspect1()
  Declare Const Sub Inspect2()
  Declare Sub Mutate1()
  Declare Sub Mutate2()
End Type

''
Sub foo.Mutate1()
  '' 非 const データ項目を変えることができます
  x = 1

  '' しかし、まだ const データ項目を変えることができません
  '' const データ項目は、変化しないと約束されます
  '' c = 1 '' コンパイル・エラーになります。

End Sub

''
Sub foo.Mutate2()
  '' const メンバーを呼ぶことができます
  Inspect1()

  '' そして、非 const メンバーも
  Mutate1()

End Sub

''
Sub foo.Inspect1()
  '' データメンバーを使用できます
  Dim y As Integer
  y = c + x

  '' しかし、それらを変えることはできません。
  '' なぜなら、Inspect1() は、const で、foo を変えないと約束するからです。
  '' x = 10 '' コンパイル・エラーになります。

End Sub

''
Sub foo.Inspect2()
  '' const メンバーを呼ぶことができます
  Inspect1()

  '' しかし、非 const メンバーではない Mutate1() は、
  '' コンパイル・エラーになります。

End Sub


QBからの違い:

参照:
手続きに戻る
ユーザ定義型 に戻る
←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2021-10-13 23:51:05
日本語翻訳:WATANABE Makoto、原文著作者:JeffMarshall

ホームページのトップに戻る

表示-非営利-継承