可以变量可用于功能呼叫中的省略号的功能在C++

0

的问题

这个函数变量的参数,

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

可以呼叫功能可以做出如下:

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

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

我的问题是,当一个省略号的功能被称为是否始终必须是 fixed 值喜欢 func(3,5,2.7,"Hi") 或可以变量可提供的功能喜欢这么叫 func(3,a,b,c)?

c++ ellipsis variadic-functions
2021-11-24 04:59:50
2

最好的答案

3

注意到,通过类似的 std::string与不平凡的复制的构造或平凡的构造移动或非微不足道析构,可能不够支持,并具有"执行情况定义"的语义。 你必须要检查你的编译文件就如何这样的课程是通过或检查,如果他们是支持在所有。

可以变量可用于功能呼叫中的省略号的功能在C++

是的。

可以呼叫功能可以做出如下

是的。

当省略号的功能被称为是否始终必须是固定值,如func(3,5,2.7"嗨")

没有。

可以变量可提供的功能呼叫喜欢这样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++草案/expr#电话-12

和在C++你应该强烈愿意: https://en.cppreference.com/w/cpp/language/parameter_pack 因为类型的安全。

2021-11-24 07:01:52
0

虽然省略号为我们提供了一些有用功能,这是相当危险的来使用它们。 当使用省略号,编译器不检查的类型参数通过的功能。 所以编译器不扔任何错误,如果参数的不同类型。 甚至如果通过字符串中,双重或bool类价值传递到平均水平()function返回返的一个意想不到的价值,编译器不扔任何错误。

资料来源: https://www.geeksforgeeks.org/ellipsis-in-c-with-examples/

2021-11-24 06:56:15

这并没有帮助!
Pratap Biswakarma

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................