posts - 134,comments - 22,trackbacks - 0
          普通的指針:通過對象指針來訪問對象的成員,調用類的成員函數;
          成員函數的指針:通過對象及成員函數指針來調用類的成員函數,僅限于非Static成員函數,Static成員函數通過類名加域限制符直接調用,無需成員指針;
          下面是成員函數指針的用法及函數表的使用示例:
           1#include <iostream>
           2
           3using namespace std;
           4
           5class 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
          39void Screen::move(Directions d)
          40{
          41    (this->*menu[d])();
          42}

          43
          44Screen::Action Screen::menu[]={
          45    &Screen::home,
          46    &Screen::left,
          47    &Screen::right,
          48    &Screen::down,
          49    &Screen::up
          50}
          ;
          51
          52
          53int main()
          54{
          55    Screen s;
          56
          57    s.move(Screen::LEFT);
          58
          59    return 0;
          60}
          posted on 2009-11-13 15:41 何克勤 閱讀(207) 評論(0)  編輯  收藏 所屬分類: C/C++
          主站蜘蛛池模板: 儋州市| 望奎县| 甘洛县| 仙居县| 子长县| 余姚市| 阿荣旗| 甘泉县| 巴林左旗| 大兴区| 塔城市| 彭泽县| 吴川市| 铜川市| 阿克苏市| 长春市| 涿鹿县| 普陀区| 库伦旗| 曲周县| 陆川县| 仁布县| 隆子县| 夹江县| 英山县| 鹤山市| 苏尼特右旗| 长兴县| 洛宁县| 浑源县| 湟中县| 濮阳市| 乌拉特中旗| 巨野县| 马关县| 化隆| 马鞍山市| 中方县| 望谟县| 丰原市| 山东|