首页 > 其他 > 详细

【M4】非必要不提供default 构造方法

时间:2014-03-03 16:03:05      阅读:417      评论:0      收藏:0      [点我收藏+]

1、default 构造方法意味着,没有外来信息的情况下,进行初始化,构造出一个对象。对于有些对象是很合理的,比如数值之类的对象,可以初始化为0;对于指针之类的对象,初始化为null;对于集合如vector,list,可以初始化为一个空容器。

2、对于有些对象,必须要有外来信息,才能构造出一个有意义的对象。比如Person,要有name才能构造出一个有意义的Person对象。

3、因此,对于没有外来信息,也能合理构造出一个对象的类,必须提供default 构造方法。对于必须有外来信息,才能构造出一个对象的类,不能有default构造方法。

4、现在考虑,没有default构造方法,使用类会有哪些限制?

5、第一个限制:使用数组的时候,没有显式调用构造方法,只是指定大小。这种情况下,调用default构造方法,因此出错。如下:

  Person pArray[10]; // 错误

  Person* pArray = new Person[10]; // 错误

6、对于栈上的数组,解决办法是:Person pArray = {Person("Andy"), Person("Bill"), ....}; 但是这种办法无法解决堆上的数组。

7、堆上的数组,可以使用“指针数组”,而不是“对象数组”。如下:

  Person* pArray = new Person* [10];

  for(int i=0;i<10;++i)

  {

    pArray[i] = new Person("Andy");

  }

【M4】非必要不提供default 构造方法,布布扣,bubuko.com

【M4】非必要不提供default 构造方法

原文:http://www.cnblogs.com/nzbbody/p/3577147.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!