zoukankan      html  css  js  c++  java
  • 类成员函数指针的语法

    /*类成员函数指针的语法*/


    /*****************************
    .h文件************************************/

    #if !defined(AFX_ONLYOBJ_H__BABA5522_94E8_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;
    }

  • 相关阅读:
    觅踪2
    构建之法阅读笔记08
    觅踪1
    暑期第四周学习周总结
    暑期第三周学习周总结
    暑期第二周学习周总结
    数据库程序设计第九天--整合总结
    数据库程序设计第八天--隔离人员权限
    数据库程序设计第七天--隔离地权限
    数据库程序设计第六天--管理员权限
  • 原文地址:https://www.cnblogs.com/w413133157/p/1654831.html
Copyright © 2011-2022 走看看