Pot fi utilizate variabile în funcția de apel în elipsă funcții în C++

0

Problema

Pentru această funcție, care are număr variabil de argumente,

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

Poate un apel de funcție să fie făcut cum urmează :

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

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

Întrebarea mea este atunci când o elipsă funcție este numit întotdeauna trebuie să fie doar fixed valori ca func(3,5,2.7,"Hi") sau poate variabile trebuie furnizate în apelul funcției place asa func(3,a,b,c)?

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

Cel mai bun răspuns

3

Rețineți că trecerea clase, cum ar fi std::string, cu non-trivial constructor de copiere sau trivial muta constructor sau non-trivial destructor, nu pot fi susținute și a "punerea în aplicare definit" semantica. Trebuie să-ți verifici compiler documentația privind modul de astfel de clase sunt transmise sau verificați dacă sunt acceptate la toate.

Pot fi utilizate variabile în funcția de apel în elipsă funcții în C++

Da.

Poate un apel de funcție să fie făcut cum urmează

Da.

atunci când o elipsă funcție este numit întotdeauna trebuie să fie doar valori fixe ca func(3,5,2.7,"Hi")

Nr.

poate variabile trebuie furnizate în apel de funcție ca asa func(3,a,b,c)?

Da.

Pot să vă sugerez orice referință așa că am putea face unele de cercetare pe ea?

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

Și în C++ ar trebui să prefera puternic: https://en.cppreference.com/w/cpp/language/parameter_pack , din cauza tipului de siguranță.

2021-11-24 07:01:52
0

Deși elipsă ne oferă unele funcționalități utile, este destul de periculos să le folosească. Atunci când se utilizează puncte de suspensie, compilatorul nu verifica tipul de argumente pentru funcție. Deci compilatorul nu arunca nici o eroare dacă argumentele sunt de diferite tipuri. Chiar dacă trece string, double, sau valori de tip bool sunt transmise la medie() funcția returnează returna o valoare neașteptată, compilatorul nu arunca nici o eroare.

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

2021-11-24 06:56:15

Acest lucru nu ajuta!
Pratap Biswakarma

În alte limbi

Această pagină este în alte limbi

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