01 class Example {
02 public:
03 static const int c_var = 12345;
04 int i_var;
05 void func(int a) {
06 i_var = a;
07 }
08 };
09 int main()
10 {
11 Example x, y, z, w;
12 x.func(10);
13 y.func(20);
14 z.func(30);
15 cout << "最初の状態 x,y,z\n";
16 cout << x.c_var << " " << x.i_var << endl;
17 cout << y.c_var << " " << y.i_var << endl;
18 cout << z.c_var << " " << z.i_var << endl;
19 cout << "***w に x を代入***\n";
20 w = x;
21 cout << "w の値変更 x,y,z,w\n";
22 w.i_var = 40;
23 cout << x.c_var << " " << x.i_var << endl;
24 cout << y.c_var << " " << y.i_var << endl;
25 cout << z.c_var << " " << z.i_var << endl;
26 cout << w.c_var << " " << w.i_var << endl;
27 cout << "x の値変更 x,y,z,w\n";
28 void (Example::*pf)(int); // ポインタによる関数funcの型宣言
29 pf = &Example::func; // 関数funcに対するポインタ
30 (x.*pf)(50); // ポインタによる関数呼び出し
31 // x.func(50); // 上3行 や「 x.i_var = 40; 」と同じ
32 cout << x.c_var << " " << x.i_var << endl;
33 cout << y.c_var << " " << y.i_var << endl;
34 cout << z.c_var << " " << z.i_var << endl;
35 cout << w.c_var << " " << w.i_var << endl;
36 Example *px, *pw;
37 px = &x;
38 pw = px;
39 (*pw).i_var = 60;
40 cout << "x のアドレス px を pw に代入 px,pw\n";
41 cout << (*px).c_var << " " << (*px).i_var << endl;
42 cout << (*pw).c_var << " " << (*pw).i_var << endl;
43 } return 0;