
C++ 11专题
文章平均质量分 68
早起的虫儿灬
这个作者很懒,什么都没留下…
展开
-
自动推导之auto关键字
auto关键字 auto关键字可以实现类型推导,但auto关键字不是一个实际的类型声明,仅仅是一个类型声明的占位符,由编译器在编译时推导变量类型,属于隐式类型声明 auto关键字的使用: 1、用auto声明变量时必须同时初始化 如: auto i; //错误 2、用auto在一条语句中声明多个变量时,该语句中所有变量的初始基本数据类型必须一致 如: auto ss = 0, pi原创 2017-01-08 23:48:03 · 582 阅读 · 0 评论 -
类型推导之decltype
decltype关键字 跟auto一样,也是用来实现类型推导,但是auto只能根据变量的初始化表达式来推导,即必须初始化。 decltype也是在编译时推导,不会实际计算表达式的值,类似于一元运算符sizeof 如: decltype (func()) sum = x; //sum的类型为函数func的返回值的类型,这里并不调用函数func 推导规则: 1、如果对原创 2017-01-09 21:36:24 · 582 阅读 · 0 评论 -
【C++11学习笔记】返回类型后置语法
转自: http://blog.csdn.net/yockie/article/details/51731281 本次学习3个知识点: (1)auto推导类型 (2)decltype推导表达式的类型 (3)返回类型后置语法 泛型编程中经常遇到的写一个加法函数: template typename R, typename T, typename U> R add(T t转载 2017-01-09 23:43:45 · 292 阅读 · 0 评论 -
模板的细节改进
模板的别名 传统方法使用关键字typedef定义类型的别名,他有一些限制,比如无法定义模板类型的别名 考虑这样一个场景: typedef std::map map_int_t; //........ typedef std::map map_str_t; //........ 我们需要一个固定以std::string为key的map,他可以映射到int或是另一个std::string,但为原创 2017-01-10 23:37:05 · 321 阅读 · 0 评论 -
统一的初始化方式
在C++98/03中,对象有多种初始化方式,如列表初始化、拷贝初始化、直接初始化、值初始化、默认初始化...... 在C++11中有了统一的初始化方式:列表初始化,即用一组花括号括起来的初始值初始化对象(甚至是为对象赋新值时) 使用方式: int a1 = { 0 }; int a2{ 0 }; 注:当列表初始化用于基本数据类型变量时,如果初始值存在丢失信息的风险,编译器将会报原创 2017-01-11 01:09:33 · 458 阅读 · 0 评论 -
C++拷贝构造、移动构造与返回值优化
转自:http://findingsea.github.io/2017/06/21/C-copy-constructor-move-constructor-and-return-value-optimization/?utm_source=tuicool&utm_medium=referral 拷贝构造函数 拷贝构造函数(又称复制构造函数),是用来创建已存在对象的副本。对应的还有一个概转载 2017-07-03 21:46:01 · 1864 阅读 · 1 评论 -
智能指针简单实现
//SmartPointer,h #ifndef _SMARTPOINTER_H_ #define _SMARTPOINTER_H_ namespace practice { template class unique_ptr { private: T *m_ptr; public: explicit unique_ptr(T *ptr = nullptr原创 2017-08-15 01:09:25 · 404 阅读 · 0 评论