C++中类对象初始化和赋值的区别

对象的初始化是说你在声明的时候就调用默认的或者非默认的构造函数进行初始化工作,而赋值指的是你用一个已经存在的对象去给另一个已经存在的对象赋值。而你在声明一个对象的时候就用另一个已经存在的对象对它初始化,这个不叫赋值,它调用的是COPY构造函数,还是构造函数。

其中对相间的赋值操作比初始化操作要慢,因为赋值操作会产生一个临时性的中间对象,这个临时性的中间对象会给被赋值对象赋值。联想以前谈C++传参的机制是值传递这一点不难推断出,这个对相间的赋值操作一定是调用了COPY赋值操作符这才导致了一个值传递的过程。

所以从程序效率的角度考虑尽量少采用对相间的赋值操作。

下图所示的是一种新的初始化形式:

对于构造函数中只有一个形参的时候,你还可以如下形式进行初始化:

C++11标准还允许你使用{}进行初始化:

不过,在现在的VS上好像C++11还行不通。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,150评论 1 51
  • 一个博客,这个博客记录了他读这本书的笔记,总结得不错。《深度探索C++对象模型》笔记汇总 1. C++对象模型与内...
    Mr希灵阅读 10,988评论 0 13
  • 夜幕降临 整个世界都在眼前 用手轻轻抚摸 随风飘落 梦里拾起儿时的梦 风起了 吹乱霓虹灯下 你的发 酒瓶打开 洋溢...
    請叫我肆爷阅读 2,047评论 0 0
  • 有些东西,错过了,就是一世…… 在这个桃花灿烂的日子,享受着久违的阳光,明媚动人,何必自寻烦恼呢? 草儿在经历风...
    半道残阳铺水中阅读 5,111评论 8 12
  • 学萨几个月了,体会最深的是那瞬息可变的气,大师者,气如游龙,时而磅礴,时而婉转。瓦釜雷鸣,清铃脆响,瞬息变化间,皆...
    楚地小生阅读 5,307评论 0 3