/**********
【初始化的基本概念】
事实:初始化和赋值是两个完全不同的操作。初始化,是创建变量时赋予其一个初始值。赋值,是把对象的当前值擦除,用一个新值代替。
列表初始化:(<<c++ primer>> P39)
作为c++11新标准的一部分,用花括号{}来初始化变量得到了全面应用。出于某些原因,这种初始化的方式叫做列表初始化。
现在,无论是初始化对象还是某些时候为对象赋新值,都可以使用一组花括号括起来的初始值了。
当用于内置类型的变量时,如果我们使用列表初始化且初始值存在丢失信息的风险时,编译器会报错。
默认初始化:(<<c++ primer>> P40)
如果定义变量时没有指定初值,则变量被默认初始化。此时变量被赋予“默认值”。
什么决定了默认值?
1.变量类型
2.定义变量的位置
如果是内置类型的变量未被显示初始化,它的值由定义的位置决定。
·定义于任何函数体之外的变量被初始化为0
·一种例外,定义在函数体内部的内置类型变量将不被初始化(函数形参也是函数体内的自动变量,未被初始化也会是未定义的)
(未被初始化的内置类型变量的值是未定义的,如果试图拷贝或以其他形式进行访问将引发错误)
如果是类,由类自己决定初始化对象的方式。而且,是否允许不经过初始化就定义对象也由类自己决定。
绝大多数类都支持无需显式初始化而定义对象,这样的类提供了一个合适的默认值。
(定义于函数体内的内置类型的对象如果没有初始化,则其值是未定义的)
(类的对象如果没有显式地初始化,则其值由类确定)
小结1:
1.什么是列表初
初始化(1)--列表初始化和默认初始化
最新推荐文章于 2024-09-23 18:30:29 发布
本文介绍了C++中的初始化与赋值的区别,重点关注列表初始化(使用花括号{})和默认初始化的概念。列表初始化适用于C++11新标准,并在不同情况下有特定的规则,例如内置类型防止信息丢失的保护。默认初始化则涉及变量类型和定义位置,内置类型在函数体外初始化为0,而在函数体内则未定义。类类型则由类自身决定初始化方式。文章通过实例演示了各种初始化方法的应用。
摘要由CSDN通过智能技术生成