直接初始化&拷贝初始化&值初始化
Posted GGBeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了直接初始化&拷贝初始化&值初始化相关的知识,希望对你有一定的参考价值。
一、变量定义&初始值
0. 变量定义的形式
//形式一 int a; //形式二 int b = 1;
1. 初始值&初始化
对象被初始化:对象在创建时获得了一个特定的值
2. 初始化&赋值
初始化变量的一种方式:用等号=来初始化变量
这种方式让人误以为初始化是赋值的一种,其实不然,初始化不是赋值
初始化:创建变量时赋予其一个初始值
赋值:把对象的当前值擦除,而以一个新值来替代
3. 列表初始化
int a = {0}; int a{0};
4. 默认初始化
定义变量时没有指定初值(此时变量被赋予了“默认值”)
内置类型:①全局变量被初始化为0,②局部变量不被初始化(值是未定义的)
类类型:①有默认构造函数则由默认构造函数初始化,②无默认构造函数同内置类型
二、直接初始化&拷贝初始化
0. 形式
string s1 = "hello"; //拷贝初始化 string s2("hello"); //直接初始化
1. 拷贝初始化
使用等号=初始化一个变量(编译器把等号右侧的初始值拷贝到新创建的对象中去)
2. 直接初始化
不使用等号=
3. 联系与区别
初始值只要一个时,使用直接初始化或拷贝初始化都行
初始值有多个时,则倾向于使用直接初始化(非要用拷贝初始化也可以)
string s3(10, ‘c‘); //直接初始化 string s4 = string(10, ‘c‘);//拷贝初始化,显式地创建一个(临时)对象用于拷贝
以上是关于直接初始化&拷贝初始化&值初始化的主要内容,如果未能解决你的问题,请参考以下文章