默认初始化
如果时内置类型变量未被显示初始化,定义于任何函数体之外的变量被初始化为0,
定义在函数体内部的内置类型变量将不被初始化。
类的对象是否初始化,由类的定义(构造函数)决定。
初始化列表:
首先声明一点:变量的初始化不是赋值,初始化的含义是创建变量时,给变量一个初始值;
赋值的含义时将原来的值擦除,而后用一个新值替代。
一、基本类型的初始化列表
比如初始化一个int型变量
int num = 10;
int num(10);
int num {10};
int num ={10};
以上四种方式都是可以对num进行初始化,
后两种方式为列表初始化,c11引进。对于内置类型的变量进行列表初始化如果初始值存在丢失信息的风险,则编译器拒绝初始化;
如:
double dnum = 3.1415;
int inum{dnum}, iinum = {dnum}; //编译失败,因为存在丢失信息的风险
int a(dunm), b=dnum; //正确
二、vector 初始化列表