屬性(Properties)
每種類型和表達式都有可以查詢的屬性:
. (). (3). 2. .
整數數據型別的屬性
.init 初始值 (0) .sizeof 以字節爲單位的大小(等價於 C 的 sizeof(type)) .alignof 對齊大小 .max 最大值 .min 最小值
浮點型別的屬性
.init 初始值 (NaN) .sizeof 以字節爲單位的大小(等價於 C 的 sizeof(type)) .alignof 對齊大小 .infinity 無窮 .nan NaN 值 .dig 換算爲十進制表示後的精度 .epsilon 最小遞增值 .mant_dig 尾數的位數(bit) .max_10_exp 以 10 爲底數的最大階碼 .max_exp 以 2 爲底數的最大階碼 .min_10_exp 以 10 爲底數的最小階碼 .min_exp 以 2 爲底數的最小階碼 .max 可表示的最大值(除了無窮) .min 可表示的最小值(除了 0 )
.init 屬性
.init 產生一個常量表達式,其值爲默認初始值。如果應用到某個類型,其值爲該類型的默認初始值。如果應用到某個變量或域,其值爲這個變量或域的默認初始值。例如:
a; b = 1; t = 2; t c; t d = (t)3; . a. b. t. c. d. Foo { a; b = 7; } Foo.a. Foo.b.
類和結構的屬性
屬性是成員函數,但在語法上被看作是域。屬性可讀可寫。通過調用一個無參數的方法可以讀取屬性。通過調用一個帶有一個參數的方法可以對屬性賦值,參數代表屬性的新值。簡單的屬性可以是:
Foo { data() { m_data; } data( value) { m_data = value; } : m_data; }
用法:
test() { Foo f; f.data = 3; f.data + 3; }
如果沒有讀方法就意味着屬性是隻讀的。可以有多個寫方法共存,用正常的重載規則來決定採用哪個函數。
在其他方面,這些方法同其他的方法都是相同的。它們可以是靜態的、擁有不同的鏈接方式、被重載、被取地址等等。
注意:目前屬性不能作爲 op=、++ 或者 -- 運算符的左值。