侯捷 C++标准11-14

本篇记录学习《侯捷 C++标准11-14》

----------------------------------------------------------------------------

下面是语言的部分

----------------------------------------------------------------------------

一、演进、环境与资源

(1)、C++ 2.0的新特性,包括语言的部分和标准库的部分。TR1是2003年的版本,即c++1.0。

(2)本文要点:

二、Variadic Templates

(1)数量不定的模板参数,参数个数和参数类型都未定。

三、Spaces in Template Expression、nullptr and std--nullptr_t、Automatic Type Deduction with auto

(1)vector<list<int> > C++11之后可以识别spaces

(2)C++11中,nullptr可以代 替 0 和 NULL。 0 ——》int型;而nullptr——》void*指针型。而NULL即是0,又是void*,所以有歧义。

(3)auto型 ——》如果类型很长时,不必指明变量类型,编译器会进行类型推倒

四、Unifrom Initialization

(1)初始化变量和对象的方法。Unifrom Initialization即使用{ },不过小括号()保留有效。

(2)编译器一看到{ },即调用initializer_list<T> ——》它又调用array<T, n>。

五——六、 Initializer_list

(1)initializer_list<T>作参数。

(2)容器 array

七、Explicit for ctors taking more than one argument——》(C++2.0中的)

(1)关键字 Explicit ,不能靠 编译器来推倒,而是明确的 调用的是哪一个具体的构造函数ctors,才会去调用那一个。

八、Range-based for statement

(1)for循环的使用:

九、=default,   =delete

(1)强制加上关键字=default ,默认的构造函数 会被调用。

十、Alias Template 别名模板

(1) 关键字using

十一、Template template parameter

(1)模板作为参数

十二、 Type Alias, noexcept, override, final

(1) Type Alias 类型化名,类似于 typedefine,也是使用关键字 using

(2)noexcept ,例子:void foo() noexcept ——》保证函数foo()不丢出异常。

(3)overwrite

virtual void cfunc(int) overwrite { } //overwrite用于告诉编译器,当重新定义虚函数出错时要报错

(4)final,修饰类和虚函数,表示 类不可以被继承,虚函数不可以被复写。

十三、decltype 关键字

(1)decltype (xxx),用于获得对象xxx的类型。

十四、lambdas

(1)lambdas允许定义inline函数。加个小括号(),就可以调用。

十五——二十一、Variadic Templates 

(1)... 出现在三个地方:

(2)Variadic Templates重写printf函数

(3)使用的是class template:类继承本类,形成递归:

(4)除了上面的继承递归,还有复合递归。

---------------------------------------------------------------------------------

下面是标准库的部分

---------------------------------------------------------------------------------

二十二、标准库源代码分布

(1)V C++的库的分布,GNU C++的库的分布

二十三、 Rvalue references and Move Semantics

(1)Rvalue references 右值引用.右值不可以放在左边;临时对象就是一个右值。 &&a

(2)Move Semantics

二十四、Perfect Forwarding

(1)unperfect  Forwarding不完美的转交

二十五、写一个 Move-aware class

(1)

二十六、 Move-aware class 对容器的效能测试

(1)

二十七、 容器—结构与分类_旧与新的比较 — 关于实现手法

(1)

二十八、容器 array

(1)

二十九、 容器 Hashtable

(1)

三十、 Hash function

(1)

三十一、 Tuple

(1)递归调用


版权声明:本文为qq_29230261原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。