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

    // ConsoleApplication34.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    class Parent 
    {
    public:
        Parent()
        {
            //cout << "我是爹" << endl;
        }
        virtual void print() 
        {
            cout << "我是爹" << endl;
        
        }
    private:
        int a;
    };
    class Child :public Parent 
    {
    public:
        Child()
        {
        
        }
        void print() 
        {
            cout << "我是儿子" << endl;
        }
    private:
        int b;
    };
    
    int main()
    {
        //返回值类型 (域作用符::*函数指针名称)(方法参数签名) 下面这个是无参的
        //void (Child::*fptr)(); 无参的
        //void (Child::*fptr)(int,int);有参的,自行领悟吧
    
        //解释:无返回值类型 作用域是属于Child类的函数指针 即:是指向Child类的任何无参成员函数的函数指针
        void (Child::*fptr)();
        //最终绑定 指向 Child类的print函数的函数指针
        fptr= &Child::print;;
        Child arr[] = { Child(),Child(),Child() };
        //Parent *p;
        //Child* c;
        //p = arr;
        //c = arr;
        //p->print();
        //c->print();
    
        //p++;
        //c++;
        //p->print();
        //c->print();
    
    
        //p++;
        //c++;
        //p->print();
        //c->print();
    
        
        (*arr.*fptr)();  //相当于 arr[0].print();
    
        (*(arr+1).*fptr)();
        (*(arr + 2).*fptr)();
    
        system("pause");
        return 0;
    }
  • 相关阅读:
    DYCom多平台聊天室Sample
    silverlight多人在线游戏示例
    设计模式之: 命令模式
    Vector
    flashBuilder加入AsDoc注释
    转:每个Flash开发者应该知道的事情
    flashBuilder无法调试:57%就不动了
    UML类图实例
    Dictionary
    Enterprise Architect使用(一)
  • 原文地址:https://www.cnblogs.com/kexb/p/5539934.html
Copyright © 2011-2022 走看看