1、初始化与赋值的区别:

  二者的区别不是看,是否有=这个赋值操作符,而是看操作的时候,对象是否已经有值。

  初始化:创建对象,并给它设置初始值。

  赋值:对象已经有值,擦除对象的当前值,并使用新值代替。

2、初始化分为直接初始化和copy初始化。

  直接初始化:直接调用与实参匹配的构造方法。

  copy初始化:也叫copy构造,总是调用copy构造方法。copy构造方法就是这样的,Person(const Person& rhs),也就是根据已有的对象,copy对象的内容,形成一个副本。

3、一方面:定义对象的时候,肯定调用某个构造方法进行了初始化,包括显示或者隐式。另一方面,对象的初始化必须是在定义的时候进行。这意味着一旦对象定义了,想修改对象,不可能再次初始化对象,只能通过赋值。

4、 Person p1 = p2; 这个语句调用copy构造,为什么?

  第一,定义对象p1的时候,肯定要调用一个构造方法,进行初始化,不可能调用赋值操作符;

  第二,赋值的前提是,p1已经有值了,定义p1的时候,p1是没有值的,只能初始化。

5、 copy构造是一种特殊的构造方法,copy赋值和copy构造虽然做的事情相同,但二者有很大的区别。

  copy构造创建一个新的对象,因为是构造方法,没有返回值。

  copy赋值修改内容,并且返回自身的引用,这也是为什么可以连环赋值的原因。p1=p2=p3.  

最新文章

  1. # ios开发 @property 和 Ivar 的区别
  2. SQL SERVER常用定义查询
  3. jenkins+gerrit
  4. github 使用教程初级版
  5. Android Design Support Library——TabLayout
  6. js知识点 知识树 知识结构 (转载 学习中)
  7. 补第二周四人小组WBS/NABCD
  8. MS WORD 表格自动调整列宽,自动变漂亮,根据内容自动调整 .
  9. uCGUI窗口的创建过程分析
  10. Android surfaceview详解
  11. 【iOS】网页中调用JS与JS注入
  12. cURL安装和使用笔记
  13. Linux Centos安装及卸载Apache
  14. sql性能优化之多表联查
  15. jdbc 连接各种数据库 CRUD
  16. Gravatar 头像使用
  17. BZOJ2243[SDOI2011]染色——树链剖分+线段树
  18. [更新]一份包含: 采用RSA JWT(Json Web Token, RSA加密)的OAUTH2.0,HTTP BASIC,本地数据库验证,Windows域验证,单点登录的Spring Security配置文件
  19. x64免签名驱动程序
  20. 使用three.js开发3d地图初探

热门文章

  1. Android学习笔记--Sqlite数据库
  2. 点击图片名,让图片在pictureBox中显示 z
  3. [Java]获取图片高和宽
  4. 分享我的PL/SQL的优化设置,为开发全面提速
  5. eclipse 在Navigator视图中查看资源
  6. cmd命令 chcp
  7. 设计模式 策略-Strategy,装饰-Decorator,观察者-Observer
  8. Slideout吐槽
  9. scanf()/getchar()和gets()深入分析
  10. Problem About Salesforce SOAP API 32.0 In .Net Project