什么叫初始化:
当对象在创建的时候得到了一个特定的值,则这个对象就被初始化了。如
int a =3
a被定义且被初始化
1.初始化与赋值有什么关系呢?
首先,初始化和赋值完全是两个概念。初始化时创建变量的时候给予一个初始值,而赋值则是把一个对象的当前值先擦除,再以一个新值来代替。
2.默认初始化
定义变量的时候为显示指定一个初始值,则变量就被默认初始化。而这个初始值是什么则由变量的类型以及其所在位置来决定
对于一个内置类型,如int ,char, float ,double。。。(string 属于类类型哦)
且其定义在任何函数之外,那么变量值为0,而定义在函数体内则未初始化,其值是未定义的。
对于类类型则对象的初始值到底为多少则由类自己决定。如string型要是未显式初始化,
std:: string str //str被初始化为一个空串
3.直接初始化和赋值初始化
int a(b) //直接初始化
int a = b //复制初始化
对于内置类型来说,复制初始化和直接初始化几乎没有差别。
对于类类型来讲,当创建类类型对象时,初始化有所不同:直接初始化直接调用与实参匹配的构造函数,复制初始化总是调用复制构造函数。
复制初始化首先使用指定构造函数创建一个临时对象,然后使用复制构造函数将那个临时对象复制到正在创建的对象
4.使用new来初始化对象
int *p = new int ; //默认初始化,*p值未定义
int *p = new int() ;//值初始化,*p为0