Czy zmienne wykorzystywane podczas wywoływania funkcji w funkcji wielokropka w C++

0

Pytanie

Dla tej funkcji, która przyjmuje zmienną liczbę argumentów,

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

Czy można wykonać wywołanie funkcji w następujący sposób :

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

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

Moje pytanie brzmi, kiedy wywoływana jest funkcja wielokropka, czy zawsze to musi być po prostu fixed takie wartości, jak func(3,5,2.7,"Hi") lub zmienne mogą być podane w wywołaniu funkcji w następujący sposób func(3,a,b,c)?

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

Najlepsza odpowiedź

3

Należy pamiętać, że przejście tych klas, jak std::stringz banalnej projektanta kopiowania lub banalnej projektanta przenieść lub banalnej деструктором, może nie być obsługiwana i ma semantykę określonej realizacją. Należy sprawdzić w dokumentacji swojego kompilatora o tym, jak przekazywane są takie zajęcia, lub sprawdzić, czy są obsługiwane w ogóle.

Czy zmienne wykorzystywane podczas wywoływania funkcji w funkcji wielokropka w C++

TAK.

Czy można wykonać wywołanie funkcji w następujący sposób

TAK.

gdy wywoływana jest funkcja wielokropka, czy zawsze to musi być po prostu stałe wartości, takie jak func(3,5,2.7,"Cześć")

Nie.

czy zmienne być podane w wywołaniu funkcji,na przykład,so func(3,a, b, c)?

TAK.

Czy możesz dać jakiś link, żebym mógł przeprowadzić jakieś badania na ten temat?

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

I w C++ należy zdecydowanie wolą: https://en.cppreference.com/w/cpp/language/parameter_pack z powodu bezpieczeństwa typu.

2021-11-24 07:01:52
0

Chociaż wielokropek daje nam kilka przydatnych funkcji, ich użycie jest bardzo niebezpieczne. Przy użyciu kropki kompilator nie sprawdza typ argumentów przekazywanych do funkcji. W ten sposób kompilator nie zgłasza żadnych błędów, jeśli argumenty są różne typy. Nawet jeśli wartości typu pass, string, double lub bool są przekazywane do funkcji average (), która zwraca nieoczekiwana wartość, kompilator nie zgłasza żadnych błędów.

Źródło : https://www.geeksforgeeks.org/ellipsis-in-c-with-examples/

2021-11-24 06:56:15

To nie pomaga!
Pratap Biswakarma

W innych językach

Ta strona jest w innych językach

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