1. 被调用的函数定义必须写在调用代码的前面。
2. 初始化不等于赋值,初始化指创建变量并给它赋初值,而赋值是擦出对象的当前值并用新值代替。
3. 在函数体外定义的内置类型变量都初始化成0,在函数体里定义的内置类型变量都不进行自动初始化。
4. 如果声明有初始化式,即被当作定义,即使声明标记为extern。
5. 只有当extern声明位于函数外部时,才可以含有初始化式。如有违背将导致编译错误C2205:不能对带有块范围的外部变量进行初始化。
6. 因为常量定义后就不能被修改,所以定义时必须初始化。如有违背将导致编译错误C2734:如果不是外部的,则必须初始化常量对象。
7. 在全局作用域定义的const变量是定义该对象的文件的局部变量,此变量只能存在于那个文件中,不能被其他文件访问,必须显式为定义添加extern,才能在整个程序中使用。
8. 非const引用只能绑定到与该引用同类型的对象。const引用则可以绑定到不同但相关的类型的对象或绑定到右值。
9. 类不是在类定义里定义数据成员时初始化数据成员,而是通过称为构造函数的特殊成员函数控制初始化。
10. 定义类时的访问标号public/private可以多次出现在类定义中,给定的访问标号应用到下一个访问标号出现为止。
11. 如果使用class关键字来定义类,那么定义在第一个访问标号前的任何成员都隐式指定为private;如果使用struct关键字,那么这些成员都是public。
12. 使用class还是struct关键字来定义类,仅仅影响默认的初始访问级别。
13. 头文件不应该含有定义,有三个例外。头文件可以定义类、旨在编译时就已知道到const对象和inline函数。
14. 在头文件中必须总是使用完全限定的标准库名字。
15. 当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型的,否则会导致编译错误C2110:不能添加两个指针。
16. 在vector中,通过下标操作进行赋值时,不会添加任何元素,只能改变现有元素的值。
17. 不允许使用void*指针操纵它所指向的对象。
18. 在表达式中使用数组名时,该名字会自动转换为指向数组第一个元素的指针。
19. 对两个指针做减法可以得到两个指针的距离,其类型应该是ptrdiff_t。
20. C++允许计算数组或对象的超出末端的地址,但不允许对此地址进行解引用操作。而计算数组超出末端位置之后或数组首地址之前的地址都是不合法的。
21. 只要定义的多个变量具有相同的类型,就可以在for循环的初始化语句中同时定义他们。