【UE C++】

typedef、函数指针、成员函数指针

typedef

#define 宏为文本串替换 typedef为将已有标识定义为一个新标识 typedef为逻辑语句 后方要加分号;

函数指针

函数指针定义方式

函数指针只考究函数签名(函数隶属,返回值,函数参数必须完全相同

void (*pFun)(int);//即定义了一个变量 叫做pFun 可以指向返回值为void 参数int的函数
void (A::*pFun)(int);//此指针指向A类中的同上类型函数

typedef与函数指针

typedef void(A::*pFun)()//此时是产生了一个叫做pFun的新标识,作为A内这一类函数的指针

在不知道另一类具体函数名称时,提前写出操作,让另一个类进行函数回调,如下
B根据A绑定的函数,来进行操作。

#include<iostream>
using namespace std;
class A {
public:
	void print()
	{
		cout << "A_called" << endl;
	}
};
typedef void(A::* aFun)();
class B {
public:
	A* a;
	aFun pf;//这里可以看出typedef的简洁性,否则要写 void(A::*pf)();
	void bind(A* a, aFun pf)
	{
		this->a = a;
		this->pf = pf;
	}
	void call()
	{
		(a->*pf)();//此处便为对成员函数指针的调用;
	}
};
int main()
{
	A* a;
	B* b;
	a = new A;
	b = new B;
	b->bind(a, &A::print);
	b->call();
}

还有另一个简单示例,可以看出函数指针的作用,就是为了把函数当作参数使用

#include<iostream>
using namespace std;
typedef void(*pfun)();
void fun1(){cout << "fun1" << endl;}
void fun2() { cout << "fun2" << endl; }
void fun3() { cout << "fun3" << endl; }
void print(pfun pf) {
	(*pf)();
}
int main()
{
	pfun myfun = &fun1;
	//pfun myfun = &fun2;
	//pfun myfun = &fun3;
	//根据赋值不同 调用函数就不一样
	print(myfun);
}

成员函数指针

上方已经有过使用经历,这里注意

.* ->* 均不可以重载 
使用方式形如 (a.*pfun)() (a->*pfun)()

还有成员变量指针,了解即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值