Dragon  
Dragon
日历
<2010年12月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
统计
  • 随笔 - 58
  • 文章 - 0
  • 评论 - 55
  • 引用 - 0

导航

常用链接

留言簿(3)

随笔分类(58)

随笔档案(58)

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 
/*
 *测试成员函数指针的小程序,有typedef与没有typedef的区别
 
*/

#include 
<iostream>
using namespace std;

class Test
{
public:
    Test();
    
~Test();

private:
    
void add5(){ res+=5;}
    
void add6(){ res+=6;}
    

    typedef 
void (Test::*add_5)();//现在add_5是一个类型了
    add_5 p_add_5;//p_add_5才是一个函数指针

    
void (Test::*add_6)();//现在add_6是一个函数指针变量
public:
    
void DoAddAction();
    
void Display();
private:
    
int res;
}
;


Test::Test()
{
    p_add_5
=&Test::add5;//注意这里的写法
    add_6=&Test::add6;  //无论在类外还是类内,这个&都不能少
    res=0;
}


Test::
~Test()
{

}


void Test::DoAddAction()
{
    (
this->*p_add_5)();//使用类成员函数指针必须有“->*”或“.*”的调用
    (this->*add_6)();
    
}


void Test::Display()
{
    cout
<<"The res is:"<<res<<endl;
}


int main()
{
    Test 
* test=new Test();
    test
->DoAddAction();
    test
->Display();
    delete test;
    
return 0;
}
posted on 2010-12-02 11:35 Dragon 阅读(594) 评论(0)  编辑 收藏 引用 所属分类: C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


 
Copyright © Dragon Powered by: 博客园 模板提供:沪江博客