zoukankan      html  css  js  c++  java
  • 类里面没有参缺省构造函数 的带来的问题 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对象一样,你也需要空间来容纳指针。

     

  • 相关阅读:
    正睿提高组2017模拟题三T1
    数位dp【转载】
    正睿提高组2017模拟题二T2
    【树状数组二维区间加+区间查询模板】bzoj3132
    【树状数组区间加+区间查询模板】洛谷P3372
    51Nod
    CodeForces 631E Product Sum
    CodeForces
    [不知道哪来的题] 完美理论
    CodeForces
  • 原文地址:https://www.cnblogs.com/gisbeginner/p/2767562.html
Copyright © 2011-2022 走看看