2018-01-03 1.类(class),C++中用来定义我们自己的数据结构,C++的一个设计焦点就是能定义使用上像内置类型一样自然的类类型(class type)。 2.使用文件重定向,当你测试程序时,反复从键盘敲入销售记录作为程序的输入,是非常乏味的。大多数操作系统支持文件重定向,这种机制允许我们将标准输入和标准输出与命名文件关联起来: $ addItems <infile> outfile 假定$是操纵系统提示符,加法程序已经编译为名为addItems.exe的可执行文件,则上述命令会从一个名为infile的文件读取销售记录,并将输出结果写入到一个名为outfile的文件中,两个文件都位于当前目录中。 3.成员函数(member function),是定义为类的一部分的函数,有时也被称为方法(method)。 4.大多数编程语言通过两种方式来进一步补充其基本特性:一是赋予程序员自定义数据类型的权利,从而实现对语言的扩展;二是将一些有用的功能封装成库函数提供给程序员。 5.计算机以比特序列存储数据,每个比特非0即1,常用2的整数次幂个比特作为块来处理内存,可寻址的最小内存卡称为“字节”(byte),存储的基本单元称为“字”(word)。 6. ①当赋值给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数。 ②当赋值给带符号类型一个超出它表示范围的值时,结果是未定义的(undefined)。此时,程序可能继续工作、可能崩溃,也可能生成垃圾数据。 ③当一个算数表达式中既有无符号数又有int值时,那个int值就会转换成无符号数。 7.转义序列(escape sequence),均以反斜杠\开始。 8.通过添加前缀和后缀,能够改变整型、浮点型和字符型字面值的默认类型。如:L’a’ u8”hi!” 42ULL 3.14159L 9. ①变量提供一个具名的、可供程序操作的存储空间。 ②变量定义的基本形式是:首先时类型说明符(type specifier),随后紧跟由一个或多个变量名组成的列表,其中变量名以逗号隔开,最后以分号结束。 ③当对象在创建时获得了一个特定的值,就说这个对象被初始化(initialized)了。 ④初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新值来代替。 10. ①声明(declaration)使得名字为程序所知,一个文件如果想使用别处定义的名字则必须包含对那个名字的声明。而定义(definition)负责创建与名字关联的实体。 ②如果想声明一个变量而非定义它,就在变量名前添加关键字extern,而且不要显式的初始化变量: extern int i; //声明i而非定义 int j; //声明并定义 任何包含了显式初始化的声明即成为定义。可以给由extern关键字标记的变量赋初值,但是这么做就抵消了extern的作用,不再是声明,而变成定义了: extern double pi = 3.14159; //定义 11.复合类型(compound type)是指基于其他类型定义的类型。 12.引用(reference)为对象起了另外一个名字,引用类型引用(refer to)另外一种类型。通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名。 int ival = 1024; int &refval = ival; //引用必须被初始化 一旦初始化完成,引用将和它的初始值对象一直绑定在一起,因为无法令引用重新绑定另外一个对象,因此引用必须初始化。 因为引用不是对象,没有实际地址,所以不能定义指向引用的指针。 13.过去的程序常用到一个名为NULL的预处理变量(preprocessor variable)来给指针赋值,这个变量在头文件cstdlib中定义,值为0。 把int变量直接赋给指针是错误的操作,即使int变量的值恰好等于0也不行。 14.对于复合类型声明,最简单的办法是从右向左阅读变量定义,离变量名最近的符号对变量的类型有最直接的影响。 15. ①指针本事是一个对象,它又可以指向另外一个对象,因此,指针本身是不是常量以及指针所指的是不是一个常量就是两个相互独立的问题。 ②顶层const(top-level const)表示指针本身是个常量,底层const(low-level const)表示指针所指的对象是一个常量。 ③更一般的,顶层const可以表示任意的对象是常量,对任何数据类型都适用;底层const则与指针和引用等复合类型的进步类型部分有关。 ④ int i = 0; int *const p1 = &i; //不能改变p1的值,这是顶层const const int ci = 42; //不能改变ci的值,这是顶层const const int *p2 = &ci; //不能改变p2的值,这是顶层const const int *const p3 = p2; //左底层,右顶层const const int &r = ci; //用于声明的都是底层const
|