用initializer_list实现C++变参函数

Posted Neo Yang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用initializer_list实现C++变参函数相关的知识,希望对你有一定的参考价值。

变参函数一般用于开发软件辅助功能,如日志记录。核心业务代码对入参会做严格的限制,一般用不到变参函数。在早期C++版本实现变参函数用C的语法,现代C++可以使用initializer_list。

下面定义个通过控制台输出日志的变参函数,写个demo.

函数定义

namespace neo 
	/*****************************************************************************
	* Function: LogConsole
	* Description: 打印日志到控制台
	* 
	* Input: logParams-日志参数列表
	* author: neo
	******************************************************************************/
	template <class T>
	void LogConsole(std::initializer_list<T> logParams) 
	
		std::string logInfo;
		for (T param : logParams) 
			logInfo.append(param).append(" ");
		
		std::cout << logInfo << std::endl;
	

Client端代码

	// 1. 调用变参函数打印日志
	std::string str = "qwqw1212";
	neo::LogConsole("1", "2", "asas", str.c_str());

initializer_list是模板类,通过 … 构造参数对象。

以上是关于用initializer_list实现C++变参函数的主要内容,如果未能解决你的问题,请参考以下文章

C++ std::initializer_list 实现原理勘误

c++ 全局变量初始化(initializer_list的向量)

std::initializer_list 的实现

C++ std::initializer_list data() 函数错误

在 Visual C++ 编译器中使用 std::initializer_list 2012 年 11 月 CTP

如何理解printf变参函数的实现