#include #include #include using namespace std; struct thing { int num; thing(int n, ...) { num = n; cout << "constructor, n = " << n << "\n"; va_list params; va_start(params, n); for (int i = 0; i < n; i += 1) cout << " arg " << i << " = " << va_arg(params, int) << "\n"; va_end(params); } void mmm(int x, ...) { cout << "method mmm\n"; va_list params; va_start(params, x); for (int i = 0; i < num; i += 1) cout << " arg " << i << " = " << va_arg(params, int) << "\n"; va_end(params); } void operator()(int x, ...) { cout << "operator()\n"; va_list params; va_start(params, x); for (int i = 0; i < num; i += 1) cout << " arg " << i << " = " << va_arg(params, int) << "\n"; va_end(params); } }; double avg(int n, ...) { double sum = 0.0; cout << "ordinary function, n = " << n << "\n"; va_list params; va_start(params, n); for (int i = 0; i < n; i += 1) { double val = va_arg(params, double); cout << " arg " << i << " = " << val << "\n"; sum += val; } va_end(params); if (n > 0) return sum / n; else return 0; } int main() { thing a(3, 99, 88, 77); a.mmm(11, 22, 33); a(10101, 20202, 30303); cout << "average = " << avg(4, 2, 3, 4, 5) << "\n"; }