1、头文件中通常包含的内容:函数原型、使用#define和const定义的符号常量、结构声明、类声明、模板声明、内联函数
    2、同样可以使用条件编译
    3、静态持续变量:外部链接性、内部链接性、无链接性静态持续变量:外部链接性、内部链接性、无链接性
        外部链接性:在代码块外部声明,不带static,可以在程序的其他文件中使用(全局变量)
        内部链接性:在代码块外部声明,带static,文件内使用,必须在包含定义代码的文件中使用
        无链接性:在代码块内部声明,带static,代码块内使用
    4、静态变量默认初始化为0
    5、::作用域解析运算符 放在变量前面可以使用变量的全局变量版本
    6、mutable 关键字 用来指出即使结构(类)为const,其某个变量也是可以修改的
    7、给new来的内存初始化  int *pi=new int (30)   或者    int *pi=new int {30}
    8、大括号的初始化形式可也用于给数组、结构初始化
    9、定位new运算符 可以设置一个buffer从那个buffer中申请空间  new(地址)类型名
    10、using声明使一个名称可用,而using编译指令(using namespace)使所有的名称可用
        一般来说using声明比using编译指令更安全,因为它只导入指定的名称
    11、通过共有空间(public)来访问修改私有空间(private)访问控制
        类设计尽可能将公有接口与实现细节分开 
    12、封装:将实现细节放在一起并将它们与抽象分开 数据隐藏(将数据放到私有部分)、将实现细节放到私有部分、将类函数定义和类函数声明放在不同文件
    13、std::cout.precision(3);   显示三位小数
    14、调用成员函数使用成员运算符点(.)
    15、类不能像结构体那样被初始化,因为数据部分的访问是私有的
        所以C++有类构造函数和析构函数
        构造函数没有返回值但不能被声明为void类型 实际上构造函数没有声明类型
        不要用类成员名称作为构造函数的参数名
        构造函数可以被显式或者隐式调用
        默认构造函数,只声明类变量,但是不赋值   只能在没有定义构造函数时这样干,如果定义了构造函数这样是不允许的
    16、构造函数:类名::类名(参数)   析构函数:类名::~类名()
    17、如果构造函数用了new必须提供使用了delete的析构函数
    18、this指针:每个对象都有一个指向它的this指针 
    19、使用this指针的函数的后面要加const限定符,这样将不能使用this来修改对象
    20、返回类型为引用意味着返回的是调用对象本身而不是其副本
    21、函数末尾加const 该函数不会修改被隐式地访问的对象

10-05 17:53