在 C++ 函数类中,可以通过在参数列表末尾添加 ... 来定义变长参数。使用时,先指定参数数量,再将额外参数传递给变长参数列表:定义变长参数方法:class MyClass {public: void printNumbers(int count, ...); };初始化可变参数列表:va_list args = va_start(args, count);遍历参数数量,获取每个参数:for (int i = 0; i < count; i++) { cout << va_arg(args, int) << " "; }结束使用可变参数列表:va_end(args);
变长参数,也被称为可变参数长度列表,允许函数接收数量不定的参数。在 C++ 中,可以通过在参数列表的末尾添加 ...
来定义变长参数。
下面是如何在 C++ 函数类中定义一个变长参数方法:
class MyClass { public: void printNumbers(int count, ...) { va_list args; va_start(args, count); for (int i = 0; i < count; i++) { cout << va_arg(args, int) << " "; } va_end(args); } };
count
是指定可变参数数量的必须参数。...
是变长参数列表,可以接收任意数量和类型的参数。va_list args
定义了一个可变参数列表。va_start(args, count)
初始化 args
并将其指向可变参数列表的第一个参数。for
循环遍历 count
个参数,并使用 va_arg(args, int)
获取每个参数。va_end(args)
结束使用可变参数列表。要使用变长参数方法,只需将已知数量的参数传递给 count
,并将额外的参数传递给变长参列表即可。
MyClass myClass; myClass.printNumbers(3, 1, 2, 3); // 输出:1 2 3
变长参数方法非常有用,尤其是在编写日志记录或调试工具时。例如,我们可以使用变长参数方法创建一个将任意数量的消息打印到控制台的日志记录函数:
class Logger { public: void log(const string& message, ...) { va_list args; va_start(args, message); cout << message; while (const char* arg = va_arg(args, const char*)) { cout << " " << arg; } va_end(args); cout << endl; } }; int main() { Logger logger; logger.log("This is a message"); // 输出:This is a message logger.log("This is a message with", "arguments", "added"); // 输出:This is a message with arguments added return 0; }