• 类成员函数指针的语法


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


    /*****************************
    .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;
    }

  • 相关阅读:
    Codeforces Round #555 (Div. 3) A B C1(很水的题目)
    蓝桥杯国赛之阶乘位数
    POJ-1258 Agri-Net(最小生成树)
    昂贵的聘礼(枚举区间+最短路)
    地斗主(矩阵快速幂)
    救救兔子(二分)
    shell编程之sed编辑器&gawk程序
    typedef&nbsp;struct与struct的区别
    iOS内存管理编程指南
    Object&nbsp;c&nbsp;基础知识
  • 原文地址:https://www.cnblogs.com/w413133157/p/1654831.html
Copyright © 2020-2023  润新知