前言
C++有两种类型的函数
- 成员函数
- 普通函数
所以,有两种类型函数的指针
函数指针的定义形式
- 普通函数指针
void (*p1)(); - 成员函数指针(比普通函数多个类名)
void (MyTime::*p2)()
函数指针的赋值操作
- 普通函数指针
p1 = test; - 成员函数指针(比普通函数多个取地址符&和类名)
p2 = &MyTime::talk;
用函数指针调用函数
- 普通函数指针调用函数
p1(); - 成员函数指针调用函数
(mt.*p2)(); //mt是MyTime类的一个对象
代码综合案例
// An hignligted block
var foo='bar';
#include<iostream>
#include"stdafx.h"
#include<iostream>
using namespace std;
class MyTime {
public:
int age;
public:
MyTime() {};
void talk() {
cout << "类成员函数talk被调用"<<this->age<<endl;
};
};
void test() {
cout << "非成员函数test函数被调用" << endl;
}
int main() {
void (*p1)();//定义指向非成员函数的指针变量p1
void (MyTime::*p2)();//定义指向成员函数的指针变量p2
MyTime mt;
mt.age = 10;
//给函数指针变量赋予具体的函数
p1 = test;
p2 = &MyTime::talk;
//通过函数的指针变量执行函数调用
p1();
(mt.*p2)(); //这种情况调用时成员函数的this指针,也会指向mt对象
return 0;
}