#include "stdafx.h"
#include <iostream>
using std::cout;
using std::endl;
#include <list>
using std::list;
//c++中普通函数和成员函数指针的区别
void NormalFun()
{
cout << "这是一个普通函数\n";
}
class A
{
public:
static void StaticFun()
{
cout << "这是类中的静态成员函数\n";
}
void MemberFun()
{
cout << "这是类中的普通成员函数\n";
}
};
int main()
{
typedef void(*pNormalFun)(); //普通函数指针
typedef void (A::*pMemberFun)(); //类中函数指针
pNormalFun fun1 = NormalFun;
pNormalFun fun2 = A::StaticFun;
//pMemberFun fun3 = A::MemberFun;
//错误 C3867 “A::MemberFun”: 非标准语法;请使用 "&" 来创建指向成员的指针
//正确使用类中的成员函数指针
pMemberFun fun3 = &A::MemberFun;
fun1();
fun2();
A a;
(a.*fun3)();
/*
可以看到普通函数指针调用函数的方式和调用类中的普通成员函数的方式不同,普通成员函数的调用依赖于该
类的一个对象,并且用.* 或者->*的语法来调用,而成员静态函数的调用和普通函数是一样的
*/
system("pause");
return 0;
}