第1章————快速入门
- main函数的返回值必须为int型
- 查看程序执行完的返回状态:
echo $?。在Windows下则是echo %ERRORLEVEL%。
- 在for循环中可以定义变量,但是该变量只具有语句作用域。如
for(int i=0; ; );
- 利用
while(std::cin>>string)做判断时,回车键是无法终止输入的。Unix中是xontrol-d,而Windows则使用control-z
- 只有类定义的操作才能用于该类型的对象。在使用类时,时刻铭记它不是内置类型,+=等操作符很可能未定义
第2章————基本语言
- C++有一些基本内置类型,包括算数类型和void特殊类型。算数类型包括整型、浮点型、字符型、布尔值型。
- 对整型的赋值,signed和unsigned类型区别较大。对于unsigned类型来说,编译器必须调整越界值使其满足要求。编译器会将该值对unsigned类型的可能数目求模,然后取所得值。比如8位的unsigned char,其取值范围从0到255.如果赋值超过这个范围,那么将会取该值对256求模后的值,即n%256。但是当将超过取值范围的值赋给signed类型时,由编译器决定实际赋的值。
- float型只能保证6位有效数字,而double型至少可以保证10位有效数字。
- 字面值常量的类型默认为int或long类型。其精度类型决定于字面值————其值适合int就是int类型,比int大的值就是long型。通过增加后缀可以进行强制转换,如128u, 1234UL, 1L.建议使用大写L,以避免混淆。
- 在字符前面加L就能够得到wchar_t类型的宽字符字面值。如L'a'。宽字符串也是同理,L"a wide string"。如果连接字符串字面值和宽字符串字面值,其结果是未定义的。
- 在一行的末尾加一反斜线可将此行和下一行当作同一行处理。反斜线符号必须是该行的尾字符————不允许其后面有注释或空格。同样,后继行行首的任何空格和制表符都是字符串字面值的一部分。
- 静态类型检查使得编译器必须能识别程序中的每个实例的类型。因此,程序中使用变量前必须先定义变量的类型。
- 变量提供了程序可以操作的有名字的存储区。
- 定义时指定了初始值的对象被称为已初始化的。C++支持两种初始化变量的形式:复制初始化和直接初始化。复制初始化语法用等号,直接初始化则是把初始化放在括号中:
int ival(1024);
int ival = 1024;
- 初始化不是赋值!初始化指创建变量并给它赋初始值,而赋值则是擦除对象的当前值并用新值代替。
- 当一个定义中定义了两个以上变量的时候,每个变量都可能有自己的初始化式。对象的名字立即变为可见,所以可以用同一个定义中前面已定义变量的值初始化后面的变量。已初始化变量和未初始化变量可以在同一个定义中定义。如
double salary = 9.0, wage(salary + 0.1);是合法的。
- 变量初始化规则。定义变量时未进行初始化的话,系统有时会帮我们初始化变量。是否初始化,怎么初始化取决于变量的类型和定义位置
- 内置类型变量的初始化。若在函数体外,则变量初始化为0;若在函数体内,不进行自动初始化。
- 类类型变量的初始化。若类有默认构造函数,不论类变量在哪个位置定义,类变量都会自动进行初始化;若类类型没有默认构造函数,那么每个定义必须显示初始化。
- 声明和定义的区别。变量的声明用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。声明用于向程序表明变量的类型和名字。
- 作用域分为全局作用域、局部作用域、语句作用域。在局部作用域中重新定义变量的话可以屏蔽全局变量。注意是重新定义!不是声明!
- 不要使用魔数(magic number)。
- const对象默认为文件的局部变量。
- 引用是一种复合类型,就是对象的另一个名字。非const引用只能绑定到与该引用同类型的对象。const引用则可以绑定到不同但相关的类型的对象或绑定到右值。
- vector是容器,是一个类模板,它不是一种类型。
posted @
2016-06-07 08:41
默默学习中
阅读(
163)
评论()
收藏
举报