【发布时间】:2020-02-07 13:18:46
【问题描述】:
【问题讨论】:
标签: c++ c++11 syntax semantics
【问题讨论】:
标签: c++ c++11 syntax semantics
开闭括号(*) 之间的星号表示函数指针的声明。 this 的左右分别代表它所指向的函数的返回类型和函数参数。
所以基本上在你的情况下:
void printHello()
{
std::cout<<"Hello";
}
void(*fPtr)() = printHello;
在 C++ 中,您可以使用更好的 OOP 方式来做同样的事情:
std::function<void()> fPtr = printHello;
fPtr();
您必须包含 functional 标头
【讨论】:
它是一个函数类型的指针,它可以用于所有没有参数并返回void的函数。
例如:
void function_1() {}
void function_2() {}
void(*func_1_ptr)() = function_1; // or = &function_1;
void(*func_2_ptr)() = function_2; // or = &function_2;
现在func_1_ptr 持有指向函数function_1 的指针,func_2_ptr 持有指向function_2 的指针。
您可以通过using 声明使类型更直观。
using FunPtrType = void(*)();
现在你可以写了
FunPtrType func_1_ptr = function_1; // or = &function_1;
//Type identifier function
FunPtrType func_2_ptr = function_2; // or = &function_2;
【讨论】:
func_1_ptr(); 调用function_1()。
这是指向函数的指针类型,它不带参数并返回void。
【讨论】: