时间:2014.03.08
地点:基地二楼
------------------------------------------------------------------------
C++中的默认构造函数使得在类的对象生成时无需提供任何基本信息也能初始化对象。比如数值类的对象一般初始化为0,指针类对象初始化为null等。但还有些情况,有些对象如果没有额外信息无法完成初始化动作,比如你手机里的电话簿字段的类,如果没有获得外界指定的人名产生的对象将会毫无意义。再比如公司生产的仪器设备每台都有一个识别编号,为这种用途(模拟仪器设备)产生的对象如果不提供适当的ID号码也是毫无意义的。因此,在现实世界里,可以合理从无到有生成对象的类应该含有默认构造,而必须有某些外来信息才能生成对象的类不必拥有默认构造。但当一个类缺乏默认构造时使用起来又会有某些限制,这是后面会详细讨论的内容。
------------------------------------------------------------------------
class EquipmentPiece{ public: EquipmentPiece(int id_number); ...... };这样EquipmentPiece就没有默认构造函数了,于是问题也就有了。
EquipmentPiece best_pieces[10]; //错误,因为类无默认构造函数,无法调用 EquipmentPiece *best_pieces_ptr=new EquipmentPiece[10]; //错误
------------------------------------------------------------------------
int ID1,ID2,ID3,......ID10; ... EquipmentPiece best_pieces[]={ EquipmentPiece(ID10, EquipmentPiece(ID2), EquipmentPiece(ID3), EquipmentPiece(ID4), ...... EquipmentPiece(ID10) };缺点是无法扩展堆数组
2.使用指针数组而非对象数组
typedef EquipmentPiece* FEP; //PEP是指向EquipmentPiece的指针 PEP best_pieces[10]; //定义一个指针数组,无需调用ctor PEP *best_pieces=new PEP[10];// 也不错 现在,数组中各指针可用来指向不同的EquipmentPiece对象 for(int i==0;i<10;++i) best_pieces[i]=new EquipmentPiece(ID Number);
原文:http://blog.csdn.net/u012333003/article/details/20787835