[英]How to interpret “void(*)()”?
它是一個指向 function 類型的指針,可用於所有沒有 arguments 並返回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 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;
這是指向 function 的指針的類型,它不接受 arguments 並返回void
。
開閉括號(*)
之間的星號表示函數指針的聲明。 這個的左右分別代表function的返回類型和function arguments。
所以基本上在你的情況下:
void printHello()
{
std::cout<<"Hello";
}
void(*fPtr)() = printHello;
在 C++ 中,您可以使用更好的 OOP 方式執行相同操作:
std::function<void()> fPtr = printHello;
fPtr();
您將必須包括functional
header
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.