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 メンバを持つことができる.
構造体と共用体も参照のこと.