C 初始化語句解析為函式定義的錯誤

2021-09-19 15:35:31 字數 565 閱讀 8256

class background_task

};background_task f;

std::thread my_thread(f);

將上述執行緒的啟動函式,改為以下形式會有問題:

std::thread my_thread(background_task());

上述**中,傳遞乙個臨時的且未命名的變數時,其語法會與函式宣告類似,會導致編譯器認為上述**為函式宣告,宣告了函式名為my_thread,引數為乙個指向不接收引數同時返回background_task物件的函式的指標,並返回std::thread物件,而非物件定義。

通過使用一組額外的括號或使用新的統一初始化語法,如下:

std::thread my_thread( (background_task()) );

std::thread my_thread;

另外,也可以使用lambda表示式避免上述問題,如下:

std::thread my_thread(());

ceph 初始化函式解析

預初始化函式,解析ceph.conf配置檔案,初始化定義global context 和 config的全域性變數.全域性預初始化函式 cinit flag unprivileged daemon defaults預設daemon 相對於下面的選項而言,一般會採用這個.cinit flag no d...

C 解析和初始化

include include using namespace std 1 父類的屬性,應該有父類的建構函式去初始化 2子類新增加的屬性,應該有子類的建構函式完成 父子分工,很明確 在子類物件構造的時,需要呼叫父類建構函式對其繼承得來的成員進行初始化 在子類物件析構的時,需要呼叫父類析構函式對其繼承...

C 初始化函式列表詳細解析

c 可以定義引用型別的成員變數,引用型別的成員變數必須在建構函式的初始化列表中進行初始化 在以下三種情況下需要使用初始化成員列表 一,需要初始化的資料成員是物件的情況 二,需要初始化const修飾的類成員 三,需要初始化引用成員資料 原因 c 可以定義引用型別的成員變數,引用型別的成員變數必須在建構...