/*类成员函数指针的语法*/
/*****************************类.h文件************************************/
#if !defined(AFX_ONLYOBJ_H__BABA5522_94E8_
#define AFX_ONLYOBJ_H__BABA5522_94E8_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class COnlyObj
{
private:
int m_nTemp;
public:
COnlyObj(int nTemp);
~COnlyObj();
public:
void ShowDate(void);
};
//声明类成员 函数指针类型
//把函数声明抄过来 void ShowDate(void);
//在前面加上 typedef void ShowDate(void);
//改一下函数名字并加上'*',在函数名两边加上'()', typedef void (*TYPE_pfn_ShowDate)(void);
//再加上作用域就完成了
typedef void (COnlyObj::*TYPE_pfn_ShowDate)(void);
typedef void (*TYPE_pfn_StaticShowDate)(void);
#endif // !defined(AFX_ONLYOBJ_H__BABA5522_94E8_
/*******************类的cpp文件****************************************/
#include "stdafx.h"
#include "OnlyObj.h"
#include <iostream.h>
COnlyObj::COnlyObj(int nTemp)
{
m_nTemp = nTemp;
}
COnlyObj::~COnlyObj()
{
}
void COnlyObj::ShowDate(void)
{
cout << m_nTemp << endl;
}
void COnlyObj::StaticShowDate(void)
{
cout << "静态成员函数,没有this指针!!!" << endl;
}
/*******************************程序主文件*****************************/
#include "stdafx.h"
#include "OnlyObj.h"
int main(int argc, char* argv[])
{
//定义一个类对象
COnlyObj theOnlyObj(20);
//再定义一个类指针对象
COnlyObj *ptheOnlyObj = new COnlyObj(30);
//定义一个成员函数指针类型,注意后来要加上作用域并不能加'()'
TYPE_pfn_ShowDate pfnShowData = COnlyObj::ShowDate;
//成员函数指针的调用
//theOnlyObj.*这段可以理解为调用成员函数所需的this指针
(theOnlyObj.*pfnShowData)();
//成员函数指针的调用
//ptheOnlyObj->*这段可以理解为调用成员函数所需的this指针
(ptheOnlyObj->*pfnShowData)();
TYPE_pfn_StaticShowDate pfnStaticShowDate = COnlyObj::StaticShowDate;
//直接调用,不用加this指针,跟普通函数指针的调用差不多
pfnStaticShowDate();
return 0;
}