const.d
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import std.stdio;
void main(){
int a = 1;
const(int) b = 10;
/*
D の const は修飾する型を () でくくる, ただし, 記憶クラスの const の場合は
() は不要で const int a = 1; でもよい.
*/
a = 2;
// b = 2; // エラー
const(int)* pca = &a;
// *pca = 2; // エラー
pca = &a;
/*
指す先を変更できて値を変更できないポインタ
*/
const(int*) cpa = &a;
// *cpa = 2; // エラー
// cpa = &a; // エラー
/*
指す先も値も変更できないポインタ
*/
writeln(*pca);
writeln(*cpa);
}
|
const.d の実行結果は:
[cactus:~/code_d/d_tuts]% ./const
2
2
immutable.d
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import std.stdio;
void main(){
int a = 1;
immutable(int) b = 10;
a = 2;
// b = 2; // エラー
// immutable(int)* pia = &a; // エラー, a はどこかで変更されるかもしれない
immutable(int)* pib = &b;
// *pib = 2; // エラー
/*
どこからも変更されない変数だけを指せて, 指す先を変更できて,
値を変更できないポインタ.
*/
// immutable(int*) ipa = &a; // エラー, a はどこかで変更されるかもしれない
immutable(int*) ipb = &b;
// ipb = &b; // エラー
// *ipb = 2; // エラー
/*
どこからも変更されない変数だけを指せて, 指す先も値も変更できないポインタ
*/
writeln(*ipb);
}
|
immutable.d の実行結果は:
[cactus:~/code_d/d_tuts]% ./immutable
10