类里面没有参缺省构造函数 的带来的问题
对于很多对象来说,不利用外部数据进行完全的初始化是不合理的。比如一个没有输入姓名的地址簿对象,就没有任何意义
class EquipmentPiece {
public:
EquipmentPiece(int IDNumber);
...
};
因为 EquipmentPiece 类没有一个缺省构造函数,所以在三种情况下使用它,就会遇到问题
(1) 第一中情况是建立对象数组时 ——EquipmentPiece bestPieces[10]; // 错误!没有正确调用 EquipmentPiece 构造函数
EquipmentPiece *bestPieces = new EquipmentPiece[10];//错误!没有正确调用 EquipmentPiece 构造函数
栈 解决方法:
int ID1, ID2, ID3, ..., ID10; // 存储设备 ID号的 变量 ...
EquipmentPiece bestPieces[] = { // 正确, 提供了构造
EquipmentPiece(ID1), // 函数的参数
EquipmentPiece(ID2), EquipmentPiece(ID3),...,EquipmentPiece(ID10)
};
堆数组(heap arrays)
typedef EquipmentPiece* PEP; // PEP 指针指向 一个 EquipmentPiece对象
PEP bestPieces[10]; // 正确, 没有调用构造函数
PEP *bestPieces = new PEP[10]; // 也正确
在指针数组里的每一个指针被重新赋值,以指向一个不同的 EquipmentPiece对象:
for (int i = 0; i < 10; ++i)
bestPieces[i] = new EquipmentPiece( ID Number );
过这中方法有两个缺点, 第一你必须删除数组里每个指针所指向的对象。 如果你忘了,就会发生内存泄漏。第二增加了内存分配量,因为正如你需要空间来容纳 EquipmentPiece对象一样,你也需要空间来容纳指针。