类里面没有参缺省构造函数 的带来的问题 GIS

对于很多对象来说,不利用外部数据进行完全的初始化是不合理的。比如一个没有输入姓名的地址簿对象,就没有任何意义

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对象一样,你也需要空间来容纳指针。

 

原文地址:https://www.cnblogs.com/gisbeginner/p/2767562.html