本篇记录学习《侯捷 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)递归调用