Mohou být proměnné použité ve volání funkce v ellipsis funkce v C++

0

Otázka

Pro tuto funkci, který trvá proměnný počet argumentů,

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

Může volání funkce být provedena takto :

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

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

Moje otázka je, když elipsa funkce nazývá se to vždycky musí být jen fixed hodnoty, jako je func(3,5,2.7,"Hi") nebo může být proměnné dodávané ve volání funkce jako tak func(3,a,b,c)?

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

Nejlepší odpověď

3

Všimněte si, že absolvování třídy jako std::strings non-triviální kopie konstruktoru nebo netriviální přesunout konstruktor nebo non-triviální destruktor, nemusí být podporován a má "provádění definované" sémantika. Budete muset zkontrolovat váš kompilátor, dokumentaci o tom, jak takové třídy jsou předány nebo zkontrolujte, zda jsou podporovány vůbec.

Mohou být proměnné použité ve volání funkce v ellipsis funkce v C++

Ano.

Může volání funkce být provedena takto

Ano.

když elipsa funkce nazývá se to vždycky musí být jen pevné hodnoty, jako func(3,5,2.7,"Ahoj")

Ne.

může proměnných být dodávány ve volání funkce tak jako func(3,a,b,c)?

Ano.

Můžete navrhnout nějaké reference, takže můžu udělat nějaký výzkum na to?

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

A v C++ rozhodně byste měli raději: https://en.cppreference.com/w/cpp/language/parameter_pack ,, protože typ bezpečnosti.

2021-11-24 07:01:52
0

Když elipsa nám dává některé užitečné funkce, to je docela nebezpečné používat. Při použití elipsa, kompilátor nekontroluje typ argumentů předaný funkci. Takže kompilátor nebude házet žádnou chybu, pokud argumenty jsou různých typů. I když projít string, double, nebo typ bool hodnoty jsou předávány do funkce average() vrací vrátit neočekávaná hodnota, kompilátor nevyvolává žádné chyby.

Zdroj : https://www.geeksforgeeks.org/ellipsis-in-c-with-examples/

2021-11-24 06:56:15

To nepomůže!
Pratap Biswakarma

V jiných jazycích

Tato stránka je v jiných jazycích

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