2/3/1 对象是内存中具有类型的区域。我们可以自由地使用对象描述程序中可操作的大部分数据,而不管这些数据是内置类型还是类类型,是有名字的还是没名字的,是可读的还是可写的。
2/3/2 变量命名习惯:1.一般用小写;2.标识符应使用有意义的名字;3、多个词间加下划线或首字母大写。
2/3/3 变量初始化:复制初始化,直接初始化。
int ival(1024); // direct-initialization
int ival = 1024; // copy-initialization
2/3/4 内置类型变量是否自动初始化取决于变量定义的位置。在函数体外定义的变量都初始化成 0,在函数体里定义的内置类型
变量不进行自动初始化
任何在多个文件中使用的变量都需要有与定义分离的声明。在这种情况下,一个文件含有变量的定义,使用该变量的其他文件则包含该变量的声明(而不是定义)。非 const 变量默认为 extern。要使 const 变量能够在其他的文件中访问,必须地指定它为 extern。
与其他变量不同,除非特别说明,在全局作用域声明的 const 变量是定义该对象的文件的局部变量。此变量只存在于那个文件中,不能被其他文件访问。通过指定 const 变更为 extern,就可以在整个程序中访问 const 对象:
// file_1.cc
// defines and initializes a const that is accessible to other files
extern const int bufSize = fcn();
// file_2.cc
extern const int bufSize; // uses bufSize from file_1
// uses bufSize defined in file_1
for (int index = 0; index != bufSize; ++index)
// ...
2/5引用必须用与该引用同类型的对象初始化.当引用初始化后,只要该引用存在,它就保持绑定到初始化时
指向的对象。不可能将引用绑定到另一个对象。
将普通的非const引用绑定到 const 对象是不合法的。
const 引用可以初始化为不同类型的对象或者初始化为右值,如字面值常量:
int i = 42;
// legal for const references only
const int &r = 42;
const int &r2 = r + i;
同样的初始化对于非 const 引用却是不合法的,而且会导致编译时错误。