如何解读"void(*)()"?
How to interpret "void(*)()"?
当我阅读shared_ptr时,我发现了一段代码:
void(*)()
如何解读?
这是指向函数的指针类型,它不带任何参数并且returns void
。
它是一个指向函数类型的指针,可以用于所有没有参数的函数和returns 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;
open-close 括号之间的星号 (*)
代表 function-pointer 的声明。 this的左边和右边代表return它将指向的函数的类型和函数参数。
基本上你的情况是:
void printHello()
{
std::cout<<"Hello";
}
void(*fPtr)() = printHello;
在 C++ 中,您可以使用更好的 OOP 方式来做同样的事情:
std::function<void()> fPtr = printHello;
fPtr();
您必须包含 functional
header
当我阅读shared_ptr时,我发现了一段代码:
void(*)()
如何解读?
这是指向函数的指针类型,它不带任何参数并且returns void
。
它是一个指向函数类型的指针,可以用于所有没有参数的函数和returns 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;
open-close 括号之间的星号 (*)
代表 function-pointer 的声明。 this的左边和右边代表return它将指向的函数的类型和函数参数。
基本上你的情况是:
void printHello()
{
std::cout<<"Hello";
}
void(*fPtr)() = printHello;
在 C++ 中,您可以使用更好的 OOP 方式来做同样的事情:
std::function<void()> fPtr = printHello;
fPtr();
您必须包含 functional
header