C++ 11(一)

c++ primer第三版看了两遍,没接触过 c++ 11 得特性,现在来看第五版,记下一些东西,模糊了的,忘记了的,才了解的


1.long long 新定义数据类型,64位,有符号类型   c++11


2.仔细看字面值常量。


3.一个引用只能绑定一个对象,不能令引用重新绑定到另外一个对象,引用必须初始化。

4.nullptr 是一种特殊类型的字面值,它可以被转化成任意其他的指针类型,初始化时最好用nullptr,尽量避免使用NULL c++11


 5.void 指针:可以用来存放任意对象的地址,因为任意对象,那么就不能操作void 指针所指的对象(后面有补充)


6.默认情况下,const对象被设定为尽在文件内有效,如果多个文件中出现了同名的const变量时,其实等同于在不同文件中分别定义了独立的变量。


7.阅读复杂表达式的时候,要从右向左读:例子: const int* ptr , int* const ptr2, int*& ref


8.顶层const:表示指针本身是一个常量(对象本身是常量),底层const:表示所指对象是一个常量。


9.常量表达式:值不会改变,并在编译过程中就能得到计算结果的表达式。


10.constexpr :如果变量声明为constexpr 类型,那么编译器就会来验证变量的值是否是一个常量表达式。如果认定变量是一个常量表达式,那么就把它声明成constexpr 。

如果是constexpr 指针,初始值必须是nullptr ,0 或者指向固定地址的对象。   c++11


11.别名声明 : 除了typedef 还可以用 using  别名 = 现有的类型名 来规定别名。  c++11


12.auto 类型说明符: 让编译器替我们分析表达式所属的类型。 auto 会忽略掉顶层const的特性,如果希望auto推断出来的类型是一个顶层const,那么就要加上const

比如: const auto name = str;c++11

13.decltype 类型指示符: decltype(表达式):用来让编译器选择并返回表达式的数据类型,如果表达式是函数,那么就返回那个函数返回值的类型,但是并不会调用

那个函数,如果是表达式,那么就返回表达式计算完毕后的类型。

decltype((expr))和decltype()的区别:前者的结果永远是引用,后者只有当expr是引用的时候,才是引用。 c++11


14.类内初始值:创建对象时,类内初始值将用于初始化数据成员。 c++11

15.避免unsigned 和 signed 的混用。


16.for循环: range for :形式: for(declaration  :expression){ statement;},其中,declaration 定义一个临时变量,expression 是一个对象,declaration

是expression里面的元素。是比以前的for要方便一点,有点像python 里面的 for declaration in expression : do something with declaration ,

但是在range for 块里面不能改变容器,序列的大小。       c++11

17.vector<vector<int> > 和 vector<vector<int>> 不用再在>>中间加空格了,但是也要看编译器把不把>>当作 operator>> c++11


18.列表初始化vector  vector<T> con = {ele1,ele2,ele3...}  或者 vector<T> con{ele1,ele2,ele3...} 比之前的构造好用一些 特别是用内置数组来初始化vector的时候,

先要声明一个数组,然后传数组首指针和长度给ctor才能构造一个vector。  c++11





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值