随笔分类 -  4、c++11::

摘要:std::optional有一个类似于智能指针的接口,它可以显式转化为bool来表示std::optional是否有一个值。指针的解引用操作符*和->都实现了,但是没有std::bad_optional_access,用这种方式访问一个空的std::optional是一个未定义的行为。reset() 阅读全文
posted @ 2020-03-16 22:39 osbreak 阅读(882) 评论(0) 推荐(0) 编辑
摘要:void func(void){} //函数指针 void(*func_ptr)(void) = &func; func_ptr(); struct Foo { void operator()(void){ } }; //仿函数 Foo foo; foo(); struct A { int a_; void mem_func(void)... 阅读全文
posted @ 2019-06-25 23:28 osbreak 阅读(144) 评论(0) 推荐(0) 编辑
摘要:模板类函数 1.01 std::is_floating_point std::is_floating_point是C++11新增加的类型特征模板之一,它用于判断一个类型是否是浮点类型。它包含在头文件<type_traits>中。 通过在模板函数中使用std::is_floating_point来判断 阅读全文
posted @ 2019-06-24 22:53 osbreak 阅读(759) 评论(0) 推荐(0) 编辑
摘要:#include <initializer_list> template <class T> class initializer_list; initializer_list对象中的元素永远是常量值const T,不能initializer_list对象中元素的值修改 1、可以使用初始化列表语法, 阅读全文
posted @ 2019-06-24 15:13 osbreak 阅读(585) 评论(0) 推荐(0) 编辑
摘要:auto 1.0 定义变量时,必须初始化 auto a = 10; // 正确 auto b; // 错误 1.1 不能用于函数参数 void func(auto a = 1); // 错误 1.2 不能用于函数参数 struct Foo { auto var1_ = 0; // error: au 阅读全文
posted @ 2019-06-24 14:52 osbreak 阅读(267) 评论(0) 推荐(0) 编辑
摘要:C++11中新增了,Mutex互斥量, 它是C++标准程序库中的一个头文件。std::mutex不支持copy和move操作,最初的std::mutex对象是处于unlocked状态。 Mutex 系列类(四种) std::mutex,最基本的 Mutex 类。 std::recursive_mutex,递归 Mutex 类。 std::time_mutex,... 阅读全文
posted @ 2018-12-09 19:06 osbreak 阅读(1202) 评论(0) 推荐(0) 编辑
摘要:#include 头文件std::thread为C++11的线程类,使用方法和boost接口一样,非常方便。 C++11的std::thread解决了boost::thread中构成参数限制的问题。 获得主线程ID: std::this_thread::get_id() 获得线程ID: std::thread::get_id(); 获得当前多少个线程: std::thread::ha... 阅读全文
posted @ 2018-12-08 14:32 osbreak 阅读(229) 评论(0) 推荐(0) 编辑
摘要:std::bind bind函数看作是一个通用的函数适配器。 它接受一个可调用对象,生成一个新的可调用对象来“适应”原对象的参数列表。 void fun(int x, int y, int z) { cout<< x <<" "<< y <<" "<< z <<endl; } 01 绑定参数 aut 阅读全文
posted @ 2018-12-06 23:52 osbreak 阅读(301) 评论(0) 推荐(0) 编辑
摘要:函数指针 函数返回值类型 (* 指针变量名) (参数列表) int (*p) (int, int) 指针函数 *类型标识符 函数名 (参数表) int *p (int, int) 区分方法 1. 函数名前面的指针*号有没有被括号()包含,如果被包含就是函数指针,反之则是指针函数。 2.()的优先级比 阅读全文
posted @ 2018-12-06 23:17 osbreak 阅读(316) 评论(0) 推荐(0) 编辑
摘要:C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。 C++11中,官方似乎一直鼓励大家用lambda表达式,而不是函数对象,lambda表达式更易于使用和理解。 lambda表达式的语法如下: [capture_block](parameters) exceptions 阅读全文
posted @ 2018-06-22 11:20 osbreak 阅读(326) 评论(0) 推荐(0) 编辑
摘要:被抛弃的std::auto_ptr std::auto_ptr 能够方便的管理单个堆内存对象。auto_ptr用于指向一个动态分配的对象指针,他的析构函数用于删除所指对象的空间,以此达到对对象生存期的控制。 auto_ptr本质是管理权限的转移。在进行赋值,拷贝构造时,会对控制权进行转移。 使用场景总结: 1)不要使用auto_ptr对象保存指向静态分配对象的指针。 2)... 阅读全文
posted @ 2018-06-22 10:44 osbreak 阅读(151) 评论(0) 推荐(0) 编辑
摘要:1、方便资源的管理,自动释放没有指针引用的资源。 2、使用引用计数来标识是否有多余指针指向该资源。(shart_ptr本身指针会占1个引用) 3、在赋值操作中, 原来资源的引用计数会减一,新指向的资源引用计数会加一。 std::shared_ptr p1(new Test); std::shared_ptr p2(new Test); p1 = p2; 4、引用计数加一/减一操作... 阅读全文
posted @ 2018-06-21 22:37 osbreak 阅读(194) 评论(0) 推荐(0) 编辑
摘要:unique_ptr使用场景 阅读全文
posted @ 2018-06-21 17:30 osbreak 阅读(477) 评论(0) 推荐(0) 编辑
摘要:weak_ptr 是一种不控制对象生命周期的智能指针, 它指向一个 shared_ptr 管理的对象. 进行该对象的内存管理的是那个强引用的 shared_ptr. weak_ptr只是提供了对管理对象的一个访问手段. 为了解决std::shared_ptr在相互引用的情况下出现的问题而存在的, std::shared_ptr赋值给weak_ptr时,weak_ptr 支持拷贝... 阅读全文
posted @ 2018-06-21 15:01 osbreak 阅读(933) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示