直接初始化&拷贝初始化&值初始化

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‘);//拷贝初始化,显式地创建一个(临时)对象用于拷贝

  

以上是关于直接初始化&拷贝初始化&值初始化的主要内容,如果未能解决你的问题,请参考以下文章

&(引用) 和 *(指针)

秋招面试我去了拼多多,直接被问JVM&GC底层原理和算法,我吊打面试官

逐个使用C++11新特性

直接初试化,拷贝初试化,值初试化

复合类型——引用和指针

拷贝构造函数 & 拷贝赋值运算符