c++ | function和 函数指针的区别

文章介绍了C++中函数、函数指针、lambda表达式以及它们在类成员函数和bind中的应用,展示了不同方式调用函数的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两者都能很快的实现对函数的调用,但是function 是c++11的特性,而函数指针是98就有的内容。

void func01(std::string str){

	std::cout<<str<<std::endl;
}
int main(){

	//一个简单函数指针的使用
	void (*ptrfunc)(std::string);
	ptrfunc = &func01;
	(*ptrfunc)("hello world");
	return 0;
}
	
//function 的使用
void func01(std::string str){
	std::ccout<<str<<std::endl;
}

int main(){
	
	std::function<void(std::string)> fuc01 = func01;	//或者fuc01(func01)
	fuc01("hello world");

	//function还可以与lambda结合
	std::function<void(std::string)> fuc02 = [](std::string str)->void{return std::cout<<str<<std::endl;};
	fuc02("hello world");

	return 0;
}
//function与类成员函数结合
Test{
public:
	void func01(std::string){
		std::cout<<str<<std::endl;
	}
};

int main(){
	std::function<void(Test*, std::string)> fuc01 = &Test::func01;
	Test t;
	fuc01(&t, "hello world");	//其实这个&t 是this 指针,因为有一个隐藏的this指针参数
	return 0;
}

还有function 和bind的结合
还会很精彩
后面续上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值