码迷,mamicode.com
首页 > 其他好文 > 详细

第19课 对象的构造(下)

时间:2016-04-14 14:08:02      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:

1. 特殊的构造函数

 

无参构造函数

拷贝构造函数

参数形式

没有参数的构造函数

参数为const class_name&的构造函数

默认情况

当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空

当类中没有定义拷贝构造函数时,编译器默认提供一个拷贝构造函数,简单的进行成员变量的值复制

【编程实验】特殊的构造函数

 

2. 拷贝构造函数

(1)拷贝构造函数的意义

  ①兼容C语言的初始化方式,即利用己经存在的对象去创建新的对象。(因为C++中初始化会涉及到拷贝构造函数的调用。注意初始化与赋值是不同的,赋值时“=”运算符会被调用)

    如:int a = b;  //C中,用一个变量来初始化另一个变量;

      Student s2 = s1;//利用己经存在的s1对象来初始化,很像C的初始化方式

  ②初始化行为能够符合预期的逻辑

(2)浅拷贝和深拷贝

  ①拷贝后对象的物理状态相同→编译器提供的拷贝构造函数只进行浅拷贝

  ②拷贝后对象的逻辑状态相同

【编程实验】对象的初始化

 

(3)什么时候需要进行深拷贝

  ①对象中有成员指代了系统中的资源

  ②如成员指向了动态内存空间打开了外存中的文件或使用了系统中网络端口

  ③自定义拷贝构造函数时,必然需要实现深拷贝

【编程实验】数组类的改进

 

3. 小结

(1)C++编译器会默认提供构造函数

(2)无参构造函数用于定义对象的默认初始状态

(3)拷贝构造函数在创建对象时拷贝对象的状态

(4)对象的拷贝有浅拷贝深拷贝两种方式

第19课 对象的构造(下)

标签:

原文地址:http://www.cnblogs.com/5iedu/p/5390766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!