文章目录
- c++11基础知识点
-
- 初始化,一切皆可{}初始化,并且可以不加=符号
- initializer_list容器
- decltype
- array
- forward_list
- 可变模板参数
- emplace
-
-
- 传递参数包:
- 传递对象:
- 总结:
-
c++11基础知识点
初始化,一切皆可{}初始化,并且可以不加=符号
initializer_list容器
decltype
array
对标的是静态数组,指针解引用,数组越界的情况。
forward_list
就是一个单链表,单项迭代器
可变模板参数
原理
使用的是编译时递归,而不是采用c语言的方java sdk11 基础类式,并没有把每一个参数都存储起来。
实际用途
emplace
原理:
可以接受参数包用于原地构造对象,也可以接受已经构造好的对象。
参数包:
系列接口使用了可变参数模板(variadic templates),因此你可以直接传递多个参数来调用对象的构造函数,这允许你直接在容器的内存中构造对象,而不需要先创建临时对象。
已经构造好的对象:
即使你传递的是一个已经构造好的对象, 系列接口仍然会尽可能避免不必要的拷贝或移动操作。具体来说,传递一个对象时, 会利用移动构造函数(如果有),否则会使用拷贝构造函数。
示例:
传递参数包:
输出:
传递对象:
输出:
总结:
- 参数包: 系列接口可以传递多个参数,这些参数会被传递给对象的构造函数以在容器中直接构造对象,避免了构造临时对象然后移动或拷贝的开销。
- 传递对象:如果你传递一个已经构造好的对象, 会尽量调用移动构造函数(如果对象是通过 传递的),否则调用拷贝构造函数。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/20412.html