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

一、变量定义&初始值

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

  

时间: 2024-10-16 14:54:31

直接初始化&拷贝初始化&值初始化的相关文章

值初始化和默认初始化的区别

直接初始化和拷贝初始化 如果使用等号(=)初始化一个变量,实际上执行的是拷贝初始化,编译器把等号右侧的初始值拷贝到新创建的对象中去.与之相反,如果不使用等号,则执行的是直接初始化. 当初始值只有一个时,使用直接初始化或拷贝初始化都行.如果用多个值进行初始化的情况,非要用拷贝初始化的方式处理也不是不可以,不过需要显式地创建一个(临时)对象用于拷贝. string s8=string(10,'c'); //拷贝初始化,s8的内容是cccccccccc. C++支持两种初始化形式:直接初始化和复制初始

程序的转化 & 明确的初始化操作 & 参数的初始化 & 返回值的初始化

一丶程序的转化考察以下代码: 1 X Foo() 2 { 3 X xx; 4 //... 5 return xx; 6 } 看到这个, 你可能会有两个想法:1. 每次 Foo() 被调用, 就会传回 xx 的值.2. 如果 class X 定义了一个 copy constructor, 那么当 Foo() 被调用时, 保证该 copy constructor 也会被调用. 这两个假设的真实性实际都要以 class X 如何定义而定, 在一个高品质的 C++ 编译器中, 以上两个假设都是错误的.

caffe中权值初始化方法

首先说明:在caffe/include/caffe中的 filer.hpp文件中有它的源文件,如果想看,可以看看哦,反正我是不想看,代码细节吧,现在不想知道太多,有个宏观的idea就可以啦,如果想看代码的具体的话,可以看:http://blog.csdn.net/xizero00/article/details/50921692,写的还是很不错的(不过有的地方的备注不对,不知道改过来了没). 文件 filler.hpp提供了7种权值初始化的方法,分别为:常量初始化(constant).高斯分布初

vue2.0动态绑定图片src属性值初始化时报错

在vue2.0中,经常会使用类似这样的语法 v-bind:src = " imgUrl "(缩写 :src = " imgUrl "),看一个案例 <template> <div> <img :src="imgUrl"> </div> </template> <script> export default { data(){ return { captcha_id: &quo

Aggregate类型以及值初始化

引言 在C++中,POD是一个极其重要的概念.要理解POD类型,我们首先需要理解Aggregate类型.下文根据stackoverflow上的回答将对Aggregate类型做一个全面的解读. 对于Aggragates的定义 C++标准(C++ 03 8.5.1 §1)中的正式定义如下: An aggregate is an array or a class (clause 9) with no user-declared constructors (12.1), no private or pr

C#4.0语法糖之第三篇: 参数默认值和命名参数 对象初始化器与集合初始化器

今天继续写上一篇文章C#4.0语法糖之第二篇,在开始今天的文章之前感谢各位园友的支持,通过昨天写的文章,今天有很多园友们也提出了文章中的一些不足,再次感谢这些关心我的园友,在以后些文章的过程中不断的完善以及自我提高,给各位园友们带来更好,更高效的文章. 废话就说到这里,下面正式进入我们的今天的C#4.0语法糖,今天给大家分享一下参数默认值.命名参数.对象初始化器和集合初始化器. 参数默认值和命名参数:方法的可选参数是.net 4.0最新提出的新的功能,对应简单的重载可以使用可选参数和命名参数混合

神经网络中权值初始化的方法

from:http://blog.csdn.net/u013989576/article/details/76215989 权值初始化的方法主要有:常量初始化(constant).高斯分布初始化(gaussian).positive_unitball初始化.均匀分布初始化(uniform).xavier初始化.msra初始化.双线性初始化(bilinear) 常量初始化(constant) 把权值或者偏置初始化为一个常数,具体是什么常数,可以自己定义 高斯分布初始化(gaussian) 需要给定

激活函数与权值初始化

1.sigmod函数--(tf.nn.sigmoid()) sigmod函数性质: 1.如图像所示其值域在[0,1]之间,函数输出不是0均值的,权重更新效率降低,因为这会导致后层的神经元的输入是非0均值的信号,这会对梯度产生影响:假设后层神经元的输入都为正(e.g. x>0 elementwise in ),那么对w求局部梯度则都为正,这样在反向传播的过程中w要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢. 当然了,如果你是按batch去训练,那么每个batch可能得

神经网络中的权值初始化方法

1,概述 神经网络中的权值初始化方法有很多,但是这些方法的设计也是遵循一些逻辑的,并且也有自己的适用场景.首先我们假定输入的每个特征是服从均值为0,方差为1的分布(一般输入到神经网络的数据都是要做归一化的,就是为了达到这个条件). 为了使网络中的信息更好的传递,每一层的特征的方差应该尽可能相等,如果保证这个特征的方差是相等的呢.我们可以从初始化的权重值入手. 首先来做一个公式推导: $var(s) = var(\sum_i^n w_i x_i)$ $var(s) = \sum_i^n var(w