• 欢迎光临~

c++11新特性之变参模板与完美转发

开发技术 开发技术 2022-10-22 次浏览

c++11新特性之变参模板与完美转发

示例:

c++11新特性之变参模板与完美转发

c++11新特性之变参模板与完美转发

 

c++11新特性之变参模板与完美转发

 运行结果:

c++11新特性之变参模板与完美转发

 

 c++11新特性之变参模板与完美转发

 运行结果:

c++11新特性之变参模板与完美转发

这说明了,这里的临时变量生命周期很短,它仅生存在push_back()的括号之内。说是即生即死也不为过。

 

 以上两种情况会带来效率问题,因此引入了变参模板和完美转发:

对类的写法稍作调整:

c++11新特性之变参模板与完美转发c++11新特性之变参模板与完美转发

 主函数中:

c++11新特性之变参模板与完美转发

运行结果:

c++11新特性之变参模板与完美转发

 将19,与“王大锤”这两个参数直接拿去构造对象(通过构造函数)且直接放入vector中去。

 

继续添加:

c++11新特性之变参模板与完美转发

 运行结果:

c++11新特性之变参模板与完美转发

 若在尾部加入新元素:
c++11新特性之变参模板与完美转发

 

 我们若是提前分配空间:

定义类的vector数组时,例如 vector<student>  vectStu(10);   //这是必须要有默认构造函数的,以便确定占多少内存。

 vector<student>  vectStu;则不一定要有默认构造函数。

因此对类添加默认构造函数:

c++11新特性之变参模板与完美转发

 主函数中:

c++11新特性之变参模板与完美转发

c++11新特性之变参模板与完美转发

c++11新特性之变参模板与完美转发

 运行结果:

c++11新特性之变参模板与完美转发------->  c++11新特性之变参模板与完美转发

 

程序员灯塔
转载请注明原文链接:c++11新特性之变参模板与完美转发
喜欢 (0)