reference 底层是指针,且reference永远无法代表空对象,指针却不行(可以不用判空) 封装性越强,能访问其私有数据的代码越少 shared_ptr传参时用const reference shared_ptr在最后引用归0(超过作用域或reset)的线程析构 noncopyable实现原理:构造析构protected, copy constructor 和assignment operator是 private enable_shared_from_this 以其派生类为模板类型实参的基类模板 无论左值引用的变量还是右值引用的变量,都是左值,可以拿到地址, 有的变量是右值引用类型,但是也是左值,常量左值引用(const T&)既可以绑定左值,又可以绑定右值 不能用右值初始化左值引用-左值引用只能绑定左值 不能用左值初始化右值引用-右值引用只能绑定右值 默认参数:1. 默认解析由最右开始进行,2. 默认只能够在定义或者声明指定一次 const返回类型的函数被调用,不能被赋值 insert iterator是个好东西(back_inserter, inserter, front_inserter) 没有一个const reference class 参数可以调用公开接口中的non-const成分 函数指针,必须指明其所指函数的返回类型和参数列表,由函数指针所指的函数,其调用方式和一般函数相同, 函数的地址就是函数的名称 inline函数要放在头文件当中,一个对象只能在程序里定义一次,必须放在程序代码文件中 函数,只有在不访问任何non-static member的条件下,才能是static function 嵌套类型(typedef existing new-type)在被外部使用时,需要指定scope来限定 指针类型会教导编译器如何解释某个特定地址当中的内存内容以及大小 C++当中的定义位于源文件当中,链接阶段才用到,对应到g++的命令参数是g++ -L C++当中的声明位于头文件当中,编译阶段会用到(这里不会去找实现),对应到g++的命令参数是g++ -I g++ -E 预处理 g++ -D 命令行定义宏 __attributre(())当中可以填写函数属性,若填写constructor,则后面函数会在main函数执行之前执行