1.第一章
1.包含来自标准库的头文件,应该用<>,对于不属于标准库的头文件,比如自己创建的头文件则使用" .h"。
2.成员函数(menber function)是定义为类的一部分的函数,有时也被称为方法(method).
3.cerr:一个ostream对象,关联到标准错误,通常写入到与标准输出相同的设备。默认情况下,写到cerr的数据是不缓冲的。cerr通常用于输出错误信息或其他不属于程序正常逻辑的输出内容。
2.第二章
1.算数类型分为两类:整型(integral type,包括字符和布尔类型在内)和浮点型.char最小尺寸为8位,int 为16位.
2.初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新值来替代。
3.指针不能隐式进行类型转换,这意味着等号左右必须是同一类型,所有指针的类型都要和它所指向的对象严格匹配,但是指向基类的指针可以指向派生类对象(这算是个例外吧)
4.如果两个指针指向的地址相同,则它们相等。
5.(void )指针, void 是一种特殊的指针类型,可用于存放任意对象的地址。一个void*指针存放着一个地址。这一点与其他指针类似。不同的是,我们对该地址中到底存放一个什么类型的对象并不了解,因此不能直接操作void *指针所指向的对象,因为我们并不知道这个对象到底是什么类型。
6.int* p1,p2 //p1是指向int类型的指针,p2是int类型
在这里基本数据类型是int而不是int*
7.int i = 1024,*p = &i,&r = i;//可以定义的时候初始化不同类型的变量
8.指向指针的引用
int i = 42;
int *p;
int *&r = p; //r是个对指针p的引用
int *q;
&q = p; //q也是个引用
r = &i;//实际是对p赋值,p指向i的地址
*r = 0;
9.const变量必须在定义的时候初始化.
10.constexpr变量
c++11新标准规定,允许将变量声明为constexpr类型以便由编译器来验证变量的值是否是一个常量表达式,声明为constexpr的变量一定是一个常量,而且必须用常量表达式初始化
11.decltype使用的是一个不加括号的变量,则得到的结果就是该变量的类型。如果给变量加上一层或者多层括号,编译器就会把它当成是一个表达式。变量是一种可以作为赋值语句左值的特殊表达式,所以这样的decltype就会得到引用类型。
decltype((i)) d; //一个i类型引用
decltype(i) e; //一个与i相同的类型