構造体

struct.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
33
34
35
36
37
38
39
40
41
42
43
import std.stdio;

struct Boo{
  int a;
  void setA(int i){
    a = i;
  }
  
  static int b; // メンバ構造体はこの変数を共有する
  static void setB(int i){
    b = i;
  }
}

void main(){
  Boo x;
  x.a = 1;
  x.b = 2;

  writeln("x -> a:", x.a, " b:", x.b);
  writeln();

  Boo y;
  y.a = 10;
  y.b = 20;
  
  writeln("x -> a:", x.a, " b:", x.b);
  writeln("y -> a:", y.a, " b:", y.b);
  writeln();

  x.setA(3); // int a = 3;
  x.setB(4); // static int b = 4;
  writeln("x -> a:", x.a, " b:", x.b);
  writeln("y -> a:", y.a, " b:", y.b);
/*
  static int b = 4 になるので, x.b = 4 にして y.b = 4 にもなる.
*/  
  writeln();

  Boo.setB(99); // static int b = 99;
  writeln("x -> a:", x.a, " b:", x.b);
  writeln("y -> a:", y.a, " b:", y.b);
}

struct.d の実行結果は:

[cactus:~/code_d/d_tuts]% ./struct
x -> a:1 b:2

x -> a:1 b:20
y -> a:10 b:20

x -> a:3 b:4
y -> a:10 b:4

x -> a:3 b:99
y -> a:10 b:99

構造体は継承できない.

C++ と同様にメンバ関数や static メンバを持つことができる.

構造体と共用体も参照のこと.

Previous topic

static 属性

Next topic

クラス