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