美文网首页
C++11 新特性(九)

C++11 新特性(九)

作者: IT孤独者 | 来源:发表于2018-09-16 22:01 被阅读0次

今天其实不想写的,但是还是有个课题需要研究----不定长参数模板。

说实话,当我知道有个这个东西存在的时候,我是非常开心的,其实有段时间我想用C++进行元编程,但是一直放弃了,因为它的元编程技术需要依赖第三方库提供的功能。可是自从有了不定长参数模板,模板的表达能力提升了一个档次,比如 bind 和 tuple 都是得益于这个功能,而当有了 tuple, C++ 函数就可以一次性返回多个值了,是不是突然感觉你不认识C++了,这还是C++了,因为有了这个功能,就像 lambda 表达式一样,整个C++的编程范式就发生了改变。

语法格式我不会描述,还是从例子说起,代码如下:

#include <cstdio>

template <typename... Args>
void my_print(const char * fmt, Args... args) {
    printf(fmt, args...);
}

int main() {
    my_print("Num %d", 1);
}

从上面代码,我们稍微总结一下:

  1. typename... Args: 这个表示我们定义了一个不定长参数类型 Args,其中 ... 是和typename连接的
  2. Args... args:这个表示我们定义了一个不定参数的变量 args, 其中 ... 是和Args连接的
  3. printf(fmt, args...):其中的 args... 表示我们展开不定长参数列表的内容,其中... 是和args连接

相关文章

网友评论

      本文标题:C++11 新特性(九)

      本文链接:https://www.haomeiwen.com/subject/wtxqnftx.html