定数の型修飾子

const

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

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

Table Of Contents

Previous topic

配列

Next topic

typedef