数据类型
2023年12月14日 2023年12月29日
基本概念
数据类型
类型决定了对象在内存空间的布局方式和占用的大小,该空间能存储的数值范围,以及对象能参与的运算
对象
内存的一块区域,具有某种类型
变量
- 为对象命名; 命名的对象或引用
- 对应一个明确对象
- 先声明后使用
声明和定义
C++支持分离式编译 separate compilation
机制, 该机制允许将程序分割为若干个文件, 每个文件可被独立编译
声明
声称存在一个变量、函数或是别处定义的类型
定义
创建与名字关联的实体
定义函数
定义变量: 为某一特定类型的变量申请存储空间, 可以赋初值
extern关键字
变量
无关键字extern即定义,无须声明
有extern无初始化,仅声明
有extern且初始化,为定义
说明
- 名字必须在定义或声明之后才能使用
- 声明和定义对类型和名字进行了统一
- 任何包含了显式初始化的声明就变成了定义
- 变量能且只能被定义一次,但可以被多次声明
初始化和赋值
两个不同的概念
(显式)初始化
创建对象并对其赋初值
建议定义对象时对其进行显式初始化
默认初始化
定义变量而未对其赋初值
按对象的生命周期和是否为类类型分开讨论:
-
具有全局作用域: 将内置类型对象初始化为0; 对类类型对象调用默认构造函数
值初始化
-
具有局部作用域: 内置类型对象不被初始化, 拥有未定义初值; 对类类型对象调用默认构造函数
试图访问拥有未定义初值的对象将引发未定义行为未定义: C++没有明确规定的情况
默认初始化类类型对象: 要求该类型拥有默认构造函数; 对对象调用默认构造函数
赋值
抹去对象的当前值并写入新值