簡體   English   中英

變量可以用於 function 調用中的省略號函數 C++

[英]Can variables be used in function call in ellipsis functions in C++

對於這個采用可變數量 arguments 的 function,

void func(int count, ...)  // ellipsis function
{
// function definition
}

可以按如下方式進行 function 調用:

int a{};
double b{};
string c{};

func(3,a,b,c); // using actual variables instead of fixed values in function call

我的問題是,當調用省略號 function 時,它是否總是必須是fixed值,如func(3,5,2.7,"Hi")或者可以在 function 調用中提供變量,如func(3,a,b,c)

請注意,像std::string這樣的傳遞類,具有非平凡的復制構造函數或非平凡的移動構造函數或非平凡的析構函數,可能不受支持,並且具有“實現定義的”語義。 您必須檢查編譯器文檔以了解此類類的傳遞方式或檢查它們是否受支持。

變量可以用於 function 調用中的省略號函數 C++

是的。

可以按如下方式進行 function 調用嗎

是的。

當調用省略號 function 時,它是否總是必須是固定值,如 func(3,5,2.7,"Hi")

不。

可以在 function 調用中提供變量,如 func(3,a,b,c)?

是的。

您能建議任何參考,以便我可以對其進行一些研究嗎?

https://en.cppreference.com/w/cpp/language/variadic_arguments https://en.cppreference.com/w/cpp/utility/variadic https://eel.is/c++draft/expr#call -12

在 C++ 中,您應該強烈喜歡: https://en.cppreference.com/w/cpp/language/parameter_pack ,因為類型安全。

雖然省略號為我們提供了一些有用的功能,但使用它們是非常危險的。 使用省略號時,編譯器不會檢查傳遞給 function 的 arguments 的類型。 因此,如果 arguments 屬於不同類型,編譯器不會拋出任何錯誤。 即使將字符串、雙精度或布爾類型的值傳遞給 average() function 它返回一個意外的值,編譯器也不會拋出任何錯誤。

資料來源: https://www.geeksforgeeks.org/ellipsis-in-c-with-examples/

暫無
暫無

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

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