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

两者都能很快的实现对函数的调用,但是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的结合
还会很精彩
后面续上

你可能感兴趣的:(c++,java,开发语言)