类成员函数指针的语法
/*類成員函數指針的語法*/
/*****************************類.h文件************************************/
#if !defined(AFX_ONLYOBJ_H__BABA5522_94E8_<?xml:namespace prefix = st1 />4F53_B979_27F3DD105320__INCLUDED_)
#define AFX_ONLYOBJ_H__BABA5522_94E8_4F53_B979_27F3DD105320__INCLUDED_
#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_4F53_B979_27F3DD105320__INCLUDED_)
?
/*******************類的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;
}
轉載于:https://www.cnblogs.com/w413133157/archive/2010/01/23/1654831.html
總結
以上是生活随笔為你收集整理的类成员函数指针的语法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一SQL语句.
- 下一篇: DeepEarth中的拖放行为(Drag