初始化
复制初始化语法用 等号=
直接初始化则把初始化式放括号中
例:int val=1024 //复制初始化
int val(1024) //直接初始化
赋值和初始化的区别:赋值是擦出对象当前的值并用新的值代替,初始化式指创建变量并给它赋初始的值.
声明和定义
定义:用于为变量分配存储空间,还可以为变量指定初始值。
声明:用于向程序表明变量的类型和名字。定义也是声明:当定义变量时,我们声明了它的类型和名字。可以通过extern关键字变量声明变量名而不定义它。
例:extern int i//声明不定义i
int i //声明并且定义i
只有当extern位于函数外部时,可以有初始化式,声明并定义变量.
例:extern int i=3//假设位于外部,定义且声明了变量i初始值为3.
const对象默认为文件的局部变量
const对象默认为文件的局部变量,非const变量默认为extern.
在全局作用域声明的const变量是定义该对象的文件的局部变量.此变量只存于那个文件中,不被其他文件访问.
通过指定const变量为extern,就可以在其他文件中访问cosnt对象
例://file 1.cc
extern cosnt int bufsize=fcn();
//file 2.cc
extern const int bufsize;//访问来自file 1.cc源文件中的变量bufsize
设计自己的头文件
头文件用于声明而不是定义
对于头文件不应该含有定义这一规则,有三个例外.头文件可以定义类、值在编译时就已知的const对象和inline函数(inline函数7.6)
预处理器的简单介绍
避免多重包含
为了保证多次包含同一头文件而不引起该头文件定义的类和对象被多次定义.应使用头文件保护符
例:
#ifndef SALESITEM_H //如果没有定义 SALESITEM_H
#define SALESITEM_H //则定义SALESITEM_H
//这里 写入你定义的类
#endif //结束
如果SALESITEM_H未定义,那么#ifndef测试成功,跟在#ifndef后面的所有行都会被执行,知道遇到#endif。如果#ifndef为假,那么该指示和#endif指示间的代码将被忽略.