Possono essere variabili utilizzate nella funzione di chiamata in puntini di sospensione delle funzioni in C++

0

Domanda

Per questo funzione che accetta un numero variabile di argomenti,

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

Può una chiamata di funzione essere fatto come segue :

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

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

La mia domanda è quando i puntini di sospensione funzione è chiamato non sempre basta fixed valori come func(3,5,2.7,"Hi") o variabili possono essere forniti in funzione chiamata così func(3,a,b,c)?

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

Migliore risposta

3

Si noti che il passaggio di classi come std::stringcon non banale costruttore di copia o banale costruttore mossa o non banale distruttore, potrebbe non essere supportato e ha "definito dall'implementazione" semantica". È necessario controllare la documentazione del compilatore come tali classi sono passati o verificare se sono supportati.

Possono essere variabili utilizzate nella funzione di chiamata in puntini di sospensione delle funzioni in C++

Sì.

Può una chiamata di funzione essere fatto come segue

Sì.

quando i puntini di sospensione funzione è chiamato non sempre basta a valori fissi, come func(3,5,2.7,"Hi")

No.

possono essere variabili fornito nella chiamata di funzione come func(3,a,b,c)?

Sì.

Puoi suggerirmi qualche riferimento in modo da poter fare qualche ricerca su di esso?

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

E in C++ dovrebbe essere decisamente preferisco: https://en.cppreference.com/w/cpp/language/parameter_pack , a causa del tipo di sicurezza.

2021-11-24 07:01:52
0

Se i puntini di sospensione ci dà alcune utili funzionalità, è del tutto pericoloso per il loro utilizzo. Quando si usano i puntini di sospensione, il compilatore non controllare il tipo di argomenti passati alla funzione. In modo che il compilatore non genera alcun errore se gli argomenti sono di diversi tipi. Anche se il passaggio string, double, o di tipo bool valori vengono passati alla funzione media() restituisce restituire un valore imprevisto, il compilatore non genera alcun errore.

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

2021-11-24 06:56:15

Questo non aiuta!
Pratap Biswakarma

In altre lingue

Questa pagina è in altre lingue

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