c++中()初始化

大家可能经常能看到这样的东西:

int x=1;
int y(1);

他们的效果都是一样的,输出x,y,都是1,那他们有什么不同呢?

=   ——赋值
() ——初始化

定义一个变量的时候,先会从内存里给他找一块空间,接下来,假如没有初始化的操作,那么系统就会给他一个默认值,然后遇到赋值操作后,再把那个值赋给它。

再看上面的两个操作,对于int x=1这个操作,系统先开辟了一段空间,然后把它的值弄成默认值,然后发现给了个赋值操作,于是又把他的值给搞成了1。

而对于int y(1)这个操作,就是在开辟了空间之后直接往里面塞了个1。

照这么看来,用()的话理论上是比=要快的。(不知道有什么神奇的原因,有的时候用()反而会跑得慢一些,但毕竟只是一个操作,所以那一点时间可以忽略不计就是了)

而且有些地方初始化是很严格的只能用()进行初始化,比如说struct的构造函数中,假如对单个元素进行初始化,就只能用()
例:

struct node{
	node():x(0),y(1){}//虽然函数里面没东西,但还是要象征性地打个左右大括号
	int x,y;
};

当然括号里面的值可以是非常数,比如int x(20),y(x);

猜你喜欢

转载自blog.csdn.net/a_forever_dream/article/details/88867841