簡體   English   中英

為什么不能在函數參數列表中使用匿名對象作為參數? C ++

[英]Why isn't it possible to have an anonymous object as argument in a function argument list? C++

例如:

struct test
{};

void thing(test())
{}

int main()
{
   thing(test());
}

這段代碼會給我錯誤; 但是,下一個示例不會給我錯誤:

void thing(int())
{}

int main()
{
   thing(int());
}

我的主要問題是,為什么第一個示例不可行而第二個示例卻不可行? 最終,雙方testint的類型,所以我想不出為什么聲明的一個匿名對象testthing函數參數列表是不可能的,而聲明類型的匿名對象intthing函數的參數列表。

可能 只是您做錯了。

這是一個帶有類型為test的未命名參數的函數的聲明:

void thing(test);

這是一個帶有未命名參數的函數的聲明,該參數的類型為pointer-to-function-returning- test

void thing(test());

您需要前者 ,而不是后者。

您的第二個代碼示例確實起作用 ,這是因為int()0是有效的空指針常量 ,可以用來初始化函數指針; 該示例在將int()交換為其他整數后立即中斷 ,或者如果您在完全兼容的C ++ 14編譯器中運行代碼(因為C ++ 14這樣做是為了使0而不是int()有效)空指針常量 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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