Pode variáveis de ser utilizada na função de chamada em reticências funções em C++

0

Pergunta

Para esta função que recebe um número variável de argumentos,

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

Pode uma chamada de função de ser feita como segue :

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

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

A minha pergunta é quando uma elipse função é chamada não tem que ser apenas fixed valores como func(3,5,2.7,"Hi") ou pode variáveis de ser fornecidos na chamada de função, como por func(3,a,b,c)?

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

Melhor resposta

3

Note que passar classes como std::string, com os não-trivial construtor de cópia ou mover uma tarefa não trivial construtor ou não-trivial processo de destruição, pode não ser suportado e tem "definido para implementação" semântica. Você tem que verificar o seu compilador documentação sobre como tais classes são passados ou verifique se elas são suportadas em todos os.

Pode variáveis de ser utilizada na função de chamada em reticências funções em C++

Sim.

Pode uma chamada de função de ser feita como se segue

Sim.

quando uma elipse função é chamada não tem que ser apenas para valores fixos, como func(3,5,2.7,"Oi")

Não.

pode variáveis de ser fornecidos na chamada de função, como por func(3,a,b,c)?

Sim.

Você pode sugerir alguma referência para que eu possa fazer alguma pesquisa sobre isso?

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

E no C++, você deve fortemente preferir: https://en.cppreference.com/w/cpp/language/parameter_pack , por causa do tipo de segurança.

2021-11-24 07:01:52
0

Apesar de reticências nos dá alguma funcionalidade útil, é muito perigosa para usá-los. Ao usar as reticências, o compilador não verifica o tipo de argumentos passados para a função. Assim, o compilador não jogar qualquer erro se os argumentos são de tipos diferentes. Mesmo se passar string, double, ou tipo bool valores são passados para a média() função retorna retornar um valor inesperado, o compilador não jogar qualquer erro.

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

2021-11-24 06:56:15

Isso não ajuda!
Pratap Biswakarma

Em outros idiomas

Esta página está em outros idiomas

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