C++复习4/15

1.当对象在创建时获得了一个特定的值,我们就说这个对象被初始化了。初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象当前的值擦除,而以一个新的值替代。

2.C++11新标准:列表初始化

int  sold = 0;

int sold = {0};//列表初始化

int sold{0};//列表初始化

int sold(0);

注意:

long double ld = 3.1415926;

int a{ld},b = {ld};//错误:转换未执行,因为存在丢失信息的危险

int c(ld),d = ld;//正确:转换执行,但确实丢失了部分值。

3.如果内置类型的变量未被显式初始化,它的值由定义的位置决定。定义于任何函数体之外的变量被初始化为0。定义于函数体内部的内置类型变量将不被初始化。一个未被初始化的内置类型变量的值是未定义的,如果试图拷贝或以其他形式访问此类值将引发错误。

4.引用:为对象起了另外一个名字。

int ival = 19;

int &refVal = ival;   //refVal 指向ival(是ival的另一个名字)

int &refVal2;          //错误,引用必须被初始化。

一般在初始化变量时,初始值会被拷贝到新建的对象中。然而定义引用时,程序把引用和它的初始值绑定在一起,而不是将值拷贝给引用。一旦初始化完成,引用将和它的初始值对象一直绑定在一起。因为无法令引用重新绑定到另外一个对象,因此引用必须被初始化。

引用并非对象,相反的,它只是为一个已经存在的对象所起的另外一个名字。

refVal = 2;//把2赋给refVal指向的对象,此处即是赋给了ival

为引用赋值,实际上是把值赋给了与引用绑定的对象。获取引用的值,实际上是获取了与引用绑定的对象的值。因为引用不是一个对象,所以不能定义引用的引用。引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果绑定在一起。

 

posted @ 2017-04-16 00:01  swsut_wjy  阅读(92)  评论(0编辑  收藏  举报