C++成员函数指针的用法

C++成员函数指针的用法
普通的指针:通过对象指针来访问对象的成员,调用类的成员函数;
成员函数的指针:通过对象及成员函数指针来调用类的成员函数,仅限于非Static成员函数,Static成员函数通过类名加域限制符直接调用,无需成员指针;
下面是成员函数指针的用法及函数表的使用示例:
 1 #include  < iostream >
 2
 3 using   namespace  std;
 4
 5 class  Screen
 6 {
 7
 8private:
 9    typedef void (Screen::* Action)();
10    static Action menu[];
11public:
12    void home()
13    {
14        cout<<"home"<<endl;
15    }

16    void left()
17    {
18        cout<<"left"<<endl;
19    }

20    void right()
21    {
22        cout<<"right"<<endl;
23    }

24    void down()
25    {
26        cout<<"down"<<endl;
27    }

28    void up()
29    {
30        cout<<"up"<<endl;
31    }

32
33public:
34    enum Directions{HOME,LEFT,RIGHT,DOWN,UP};
35    void move(Directions);    
36}
;
37
38
39 void  Screen::move(Directions d)
40 {
41    (this->*menu[d])();
42}

43
44 Screen::Action Screen::menu[] = {
45    &Screen::home,
46    &Screen::left,
47    &Screen::right,
48    &Screen::down,
49    &Screen::up
50}
;
51
52
53 int  main()
54 {
55    Screen s;
56
57    s.move(Screen::LEFT);
58
59    return 0;
60}

你可能感兴趣的:(C++成员函数指针的用法)