摘要:
20、weak_ptr弱引用的智能指针 0、课前秀 + 弱引用指针weak_ptr是用来监视shared_ptr的,不会使引用计数加1,它不管理shared_ptr内部的指针,主要是为了监视shared_ptr的生命周期。 + weak_ptr没有重载操作符 和` `,因为它不共享指针,不能操作资源 阅读全文
摘要:
19、unique_ptr独占的智能指针 0、课前秀 1、unique_ptr + 不允许通过赋值将一个unique_ptr赋值给另外一个unique_ptr。 + 可以通过函数返回给其他的unique_ptr,还可以通过std::move来转移到其他的unique_ptr,这样它本身就不再拥有原来 阅读全文
摘要:
18shared_ptr共享的智能指针 0、课前秀 + 智能指针不会担心内存泄漏的问题,会自动删除分配的内存。 + 智能指针 是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保在离开指针所在作用域时,自动正确地销毁动态分配的对象,防止内存泄漏。 + 提供3种智能指针,引用头文件`` + 阅读全文
摘要:
17、可变参数模版和type_traits的综合应用 0、课前秀 + 可变参数模板,经常与lambda、function、type_traits结合在一起。 1、optional的实现 + C++14中将包含一个 类。 + optional可以用于解决函数返回无效值的问题。如果查找不到对象,就会返回 阅读全文
摘要:
可变参数模板 0、课前秀 + C++11之前,类模板和函数模板只能含有固定数量的模板参数。 + C++11允许模板定义中包含0到任意多个模板参数, 写法上,在typename或class后面带上省略号 。 + 省略号的作用: + 在模板定义的右边,可以将参数包展开成一个一个独立的参数。 1、可变参数 阅读全文
摘要:
15type_traits类型萃取 0、课前秀 + trait的意思是 特性,特征 。 + 搜了一下 "" 头文件 1、基本的type_traits (1)简单的type_traits + C++98/03通过枚举定义 编译期常量 。 + C++11无须自己定义static const int或en 阅读全文
摘要:
14unordered container无序容器 0、课前秀 + 比起有序容器,无序容器(unordered_map/unordered_multimap和unordered_set/unordered_multiset)里的元素是不排序的。 + map和set内部是 红黑树 ,插入元素时会自动排 阅读全文
摘要:
13emplace_back减少内存拷贝 课前秀 + 与 比, 能就地通过参数构造对象,不需要拷贝或者移动内存 。 + 在cppreference.com里搜索“emplace_back”,其实是容器里的一个方法而已。 + list,deque,vector,pmr::list,pmr::deque 阅读全文
摘要:
chap14操作重载和类型转换 14.1、基本概念 + 等价于 ,都调用了非成员函数 + 等价于 ,都调用了成员函数 赋值类的只能定义为成员函数 。 + 哪些该定义为成员函数,哪些该定义为非成员函数? 14.2、输入和输出运算符(必须是非成员函数) 14.2.1、重载输出运算符 14.3、算术和关系 阅读全文
摘要:
forward和完美转发 0、课前秀 + "std::forward" 也是头文件中的`` + 右值引用类型是独立于值的。 + 一个右值引用参数作为函数的形参,在函数内部再转发该参数的时候它已经变成一个左值了,并不是它原来的类型了 。 1、完美转发 + 完美转发 (Perfect Forwardin 阅读全文