C++两种类型函数的指针:普通函数的指针,成员函数的指针

前言

C++有两种类型的函数

  1. 成员函数
  2. 普通函数

所以,有两种类型函数的指针

函数指针的定义形式

  1. 普通函数指针
    void (*p1)();
  2. 成员函数指针(比普通函数多个类名)
    void (MyTime::*p2)()

函数指针的赋值操作

  1. 普通函数指针
    p1 = test;
  2. 成员函数指针(比普通函数多个取地址符&和类名)
    p2 = &MyTime::talk;

用函数指针调用函数

  1. 普通函数指针调用函数
    p1();
  2. 成员函数指针调用函数
    (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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值