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;
最初の状態 x,y,z 12345 10 12345 20 12345 30 ***w に x を代入*** w の値変更 x,y,z,w 12345 10 12345 20 12345 30 12345 40 x の値変更 x,y,z,w 12345 50 12345 20 12345 30 12345 40 x のアドレス px を pw に代入 px,pw 12345 60 12345 60