浅墨浓香

想要天亮进城,就得天黑赶路。

导航

上一页 1 2 3 4 5 6 7 8 ··· 38 下一页

2019年10月5日

摘要: 一. make系列函数 (一)三个make函数 1. std::make_shared:用于创建shared_ptr。GCC编译器中,其内部是通过调用std::allocate_shared来实现的。 2. std::make_unique:C++14中加入标准库。 3. std::allocate 阅读全文

posted @ 2019-10-05 20:24 浅墨浓香 阅读(942) 评论(0) 推荐(0) 编辑

摘要: 一. weak_ptr的概况 (一)weak_ptr的创建 1. 直接初始化:weak_ptr<T> wp(sp); //其中sp为shared_ptr类型 2. 赋值: wp1 = sp; //其中sp为shared_ptr类型 wp2 = wp1; //其中wp1为weak_ptr类型 (二)常 阅读全文

posted @ 2019-10-05 00:11 浅墨浓香 阅读(2433) 评论(0) 推荐(0) 编辑

2019年10月4日

摘要: 一. shared_ptr的基本用法 (一)与unique_ptr的比较 比较 shared_ptr unique_ptr 备注 初始化 ①shared_ptr<T> sp; sp.reset(new T()); ②shared_ptr<T> sp(new T()); ③shared_ptr<T> 阅读全文

posted @ 2019-10-04 16:19 浅墨浓香 阅读(2210) 评论(0) 推荐(0) 编辑

2019年10月3日

摘要: 一. unique_ptr的基本用法 (一)初始化方式 1. 直接初始化:unique<T> myPtr(new T); //ok。但不能通过隐式转换来构造,如unique<T> myPtr = new T()。因为unique_ptr构造函数被声明为explicit。 2. 移动构造:unique 阅读全文

posted @ 2019-10-03 11:09 浅墨浓香 阅读(3545) 评论(0) 推荐(2) 编辑

2019年9月6日

摘要: 一. std::bind (一)std::bind实现的关键技术 【编程实验】探索bind原理,实现自己的bind函数 #include <iostream> #include <tuple> using namespace std; //1. 占位符定义 template<size_t idx> 阅读全文

posted @ 2019-09-06 19:30 浅墨浓香 阅读(2868) 评论(2) 推荐(5) 编辑

2019年8月21日

摘要: 一. lambda的捕获方式 (一)3种捕获方式: 1. 按值捕获: [=]或[var],前者为按值的默认捕获方式 2. 按引用捕获:[&]或[&var],前者为按引用的默认捕获方式 3. 初始化捕获(C++14): 见后面的《广义捕获》及由其引申出来的移动捕获功能。这种捕获方式可以做到C++11中 阅读全文

posted @ 2019-08-21 18:46 浅墨浓香 阅读(1621) 评论(2) 推荐(1) 编辑

摘要: 一. lambda表达式 (一)语法定义:[capture](paramters) mutable ->returnType{statement} 1.[capture]:捕获列表 (1)lambda函数只能捕获父作用域中的局部变量或形参。而捕获非父作用域或静态变量则会出错。(这里的父作用域指的是包 阅读全文

posted @ 2019-08-21 10:23 浅墨浓香 阅读(707) 评论(0) 推荐(0) 编辑

2019年8月19日

摘要: 一.万能引用形参重载函数的问题 (一)当产生精确匹配时: C++的重载匹配是贪婪的,当形参为万能引用类型时,实例化过程中,它和几乎任何的实参类型都会产生精确匹配。 1. 根据重载匹配规则,精确匹配优先于类型转换的函数。一旦万能引用成为重载候选函数,就会吸引起大批的实参类型。因此,形参为万能引用的重载 阅读全文

posted @ 2019-08-19 16:45 浅墨浓香 阅读(907) 评论(0) 推荐(0) 编辑

2019年8月9日

摘要: 一、理解引用折叠 (一)引用折叠 1. 在C++中,“引用的引用”是非法的。像auto& &rx = x;(注意两个&之间有空格)这种直接定义引用的引用是不合法的,但是编译器在通过类型别名或模板参数推导等语境中,会间接定义出“引用的引用”,这时引用会形成“折叠”。 2. 引用折叠会发生在模板实例化、 阅读全文

posted @ 2019-08-09 00:58 浅墨浓香 阅读(7967) 评论(5) 推荐(5) 编辑

2019年8月8日

摘要: 一. std::move (一)std::move的原型 (二)注意事项 1. std::move的本质就强制类型转换,它无条件地将实参转为右值引用类型(匿名对象,是个右值),继而用于移动语义。 2. 该函数只是将实参转为右值,除此之外并没有真正的move任何东西。实际上,它在运行期没任何作为,编译 阅读全文

posted @ 2019-08-08 00:26 浅墨浓香 阅读(4064) 评论(1) 推荐(1) 编辑

2019年8月6日

摘要: 一. 左值和右值 (一)概述 1. 左值是一般指表达式结束后依然存在的持久化对象。右值指表达式结束时就不再存在的临时对象。便捷的判断方法:能对表达式取地址、有名字的对象为左值。反之,不能取地址、匿名的对象为右值。 2. C++ 表达式(运算符带上其操作数、字面量、变量名等)有两种独立的属性:类型和值 阅读全文

posted @ 2019-08-06 12:22 浅墨浓香 阅读(1198) 评论(2) 推荐(0) 编辑

2019年8月3日

摘要: 一. 特殊成员函数 (一)概述 1. 特殊成员函数指C++会自行生成的成员函数,主要有6种:默认构造函数、析构函数、复制构造函数、复制赋值函数、移动构造函数和移动赋值函数。 2. 默认生成的特殊成员函数都具有public访问权限且是inline的非虚函数(除析构例外)。通常,如果这些函数不被相关代码 阅读全文

posted @ 2019-08-03 15:07 浅墨浓香 阅读(900) 评论(0) 推荐(0) 编辑

2019年8月2日

摘要: 一、继承构造函数 (一)函数继承与同名覆盖 1. 派生类可以自动获得基类的成员变量和接口(虚函数和纯虚函数,这里指都是public派生),这体现了类的继承性。 2. 如果基类的非虚函数在派生类被重写,则将发生同名覆盖现象。即基类函数在派生类中会被同名函数隐藏,从而不可见。特别是构造函数也不例外,基类 阅读全文

posted @ 2019-08-02 20:50 浅墨浓香 阅读(736) 评论(0) 推荐(0) 编辑

2019年8月1日

摘要: 一、default和delete关键字 (一)编译器提供的“缺省函数” 1.类的成员函数:构造/析构函数、复制构造/复制赋值函数、移动构造/移动赋值函数。 2. 类的全局默认操作函数:operator new/delete、operator,、operator*、operator->、operato 阅读全文

posted @ 2019-08-01 23:10 浅墨浓香 阅读(828) 评论(0) 推荐(0) 编辑

2019年7月30日

摘要: 一. 回顾C++异常机制 (一)概述 1. 异常处理是C++的一项语言机制,用于在程序中处理异常事件(也被称为导常对象)。 2. 异常事件发生时,使用throw关键字抛出异常表达,抛出点称为异常出现点,由操作系统为程序设置当前异常对象。然后执行程序当前异常处理代码块。 3. 在包含异常出现点的最内层 阅读全文

posted @ 2019-07-30 16:33 浅墨浓香 阅读(821) 评论(0) 推荐(0) 编辑

2019年7月29日

摘要: 一. const 和constexpr的区别 (一)修饰变量时,const为“运行期常量”,即运行期数据是只读的。而constexpr为“编译期”常量,这是const无法保证的。两者都是对象和函数接口的组成部分。 (二)修饰函数时,与const关键字相比,constexpr关键字不仅可以修饰变量和指 阅读全文

posted @ 2019-07-29 01:24 浅墨浓香 阅读(899) 评论(0) 推荐(0) 编辑

2019年7月27日

摘要: 一. typedef和using关键字 (一)两者的差异 ①C++11引入using关键字,覆盖了typedef的全部功能。它既可以用来定义类型的别名,也可以定义模板的别名。而typedef可以定义类型的别名,但不能用来重定义模板的别名。 ②使用using不用写“::type”的后缀。在模板内,对于 阅读全文

posted @ 2019-07-27 16:45 浅墨浓香 阅读(748) 评论(0) 推荐(0) 编辑

2019年7月25日

摘要: 一. nullptr与nullptr_t (一)nullptr_t是一种数据类型,而nullptr是该类型的一个实例。通常情况下,也可以通过nullptr_t类型创建另一个新的实例。 (二)所有定义为nullptr_t类型的数据都是等价的,行为也是完全一致的。 (三)std::nullptr_t类型 阅读全文

posted @ 2019-07-25 16:48 浅墨浓香 阅读(3604) 评论(0) 推荐(1) 编辑

2019年7月24日

摘要: 一、统一初始化(Uniform Initialization) (一)C++四种初始化方式 1. 小括号:int x(0); //C++98 2. 等号:int x = 0; //C++98 3. 大括号:int x{0}; //C++98成功,C++11成功 4. 等号和大括号:int x = { 阅读全文

posted @ 2019-07-24 16:59 浅墨浓香 阅读(997) 评论(0) 推荐(0) 编辑

2019年7月21日

摘要: 第4课 decltype类型推导 一、decltype类型推导 (一)语法: 1、语法:decltype(expr),其中的expr为变量(实体)或表达式 2、说明: ①decltype用于获取变量的类型,或表达式结果的类型或值类型。decltype推导过程是在编译期完成的,并且不会真正计算表达式的 阅读全文

posted @ 2019-07-21 18:14 浅墨浓香 阅读(1303) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 ··· 38 下一页