日期:2011-03-22 13:55:00 来源:本站整理
More Effective C++:避免缺省构造函数[VC/C++编程]
本文“More Effective C++:避免缺省构造函数[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
缺省构造函数(指没有参数的构造函数)在C++语言中是一种让你无中生有的办法.构造函数能初始化对象,而缺省构造函数则可以不操纵任安在成立对象时的外部数据就可以初始化对象.有时这样的办法是不错的.比方一些行为特点与数字相仿的对象被初始化为空值或不肯定的值也是公道的,还有比方链表、哈希表、图等等数据构造也可以被初始化为空容器.
但不是全部的对象都属于上述范例,关于很多对象来说,不操纵外部数据举行完好的初始化是不公道的.比方一个没有输入姓名的地址簿对象,就没有任何意义.在一些公司里,全部的设备都必须标有一个公司ID号码,所以在成立对象以模子化一个设备时,不供应一个符合的ID号码,所成立的对象就根本没有意义.
在一个完善的世界里,无需任何数据便可成立对象的类可以包含缺省构造函数,而需求数据来成立对象的类则不能包含缺省构造函数.唉!但是我们的实际世界不是完善的,所以我们必须考虑更多的因素.分外是假如一个类没有缺省构造函数,就会存在一些利用上的限制.
请考虑一下有这样一个类,它表示公司的设备,这个类包含一个公司的ID代码,这个ID代码被强迫做为构造函数的参数:
class EquipmentPiece {
public:
EquipmentPiece(int IDNumber);
...
};
因为EquipmentPiece类没有一个缺省构造函数,所以在三种情形下利用它,就会碰到问题.第一中情形是成立数组时.普通来说,没有一种办法能在成立对象数组时给构造函数传送参数.所以在普通情形下,不大概成立EquipmentPiece对象数组:
EquipmentPiece bestPieces[10]; // 错误!没有精确调用
// EquipmentPiece 构造函数
EquipmentPiece *bestPieces =
new EquipmentPiece[10]; // 错误!与上面的问题一样
不过还是有三种办法能躲避开这个限制.关于利用非堆数组(non-heap arrays)(即不在堆中给数组分配内存.译者注)的一种办理办法是在数组定义时供应必要的参数:
以上是“More Effective C++:避免缺省构造函数[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论