2,3,4,5,6,7,8,9,10,11,12,13,14
当前位置: 首页  - 读书笔记  - Effective Modern C++  - 列表 - 第3页

Effective Modern C++

Effective Modern C++08 |优先选用nullptr,而非0或NULL

08 |优先选用nullptr,而非0或NULL

我们需要清楚的知道一件事情,就是0和NULL都不是指针类型,使用它们可以匹配不到指针类型的重载函数。但是nullptr就不一样了,虽然它的本质是std::nullptr_t,但是因为其可以隐式转换到所有类型的裸指针型别。所以在函数重载时,nullptr可以完美匹配指针型别的重载函数:void f(int);void f(bool);voi

Effective Modern C++07 |在创建对象时注意区分()和{}

07 |在创建对象时注意区分()和{}

对象初始化的方式有很多种,特别是C++11新引入了统一初始化,可以用于一切场合的初始化,至少从概念上可以这么理解。目前常见的初始化方式大概有以下几种:int x(0);//使用小括号初始化int y = 0; //使用等号初始化int z{0};//使用C++11新引入的统一初始化格式,即大括号初始化int

Effective Modern C++05 |优先选用auto,而非显示型别声明

05 |优先选用auto,而非显示型别声明

第四章是无用的,这里暂时不整理了。废话补多少,直接总结一下使用auto的好处:1、对于变量未初始化情况,如果使用显示显示型别声明,程序猿将无感知,但是如果使用了auto进行变量声明,将提醒你编译错误。int x1; //有潜在的未初始化风险,编译器最多给告警auto x2; //未初始化,编译报错2、可以使用auto来表示只有编译器才知

Effective Modern C++03 |理解decltype

03 |理解decltype

decltype是C++11新增的一个关键字,它的主要用途是那些返回值依赖于形参型别的函数模板。一般来说decltype告诉你的结果与你预测的几乎相同,所以这里就不再累述,只需要记住以下几点即可:decltype(expression) var; 具体判断逻辑如下:(1)如果expression没有使用括号括起来,则类型与expressi

Effective Modern C++02 |理解auto型别推导

02 |理解auto型别推导

首先auto型别推导与模板型别推导完全相同,也是按照前面说的三种情况进行推导,唯一的区别是在对大括号括起来的表达式进行推导时,auto会将其推导为一个std::initializer_list<T>的类型。代码示例如下:auto x1 = 27;//x1型别为intauto x2(27); //x2型别为intauto x3&

Effective Modern C++01| 理解模板型别推导

01| 理解模板型别推导

C++98仅有一套型别推导,用于函数模板。C++11对这套规则进行了一些改动并增加了两套规则,一套用于auto,一套用于decltype。后来C++14又扩展了能够运用auto和decltype的语境。下面先重点讲一下auto关键字的使用语境:请允许我使用一小段伪代码来说明。函数模板的大致形如:template<Class T>

用户登录