簡體   English   中英

如何解釋“void(*)()”?

[英]How to interpret “void(*)()”?

當我閱讀shared_ptr時,我發現了一段代碼:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM