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

     

  • 相关阅读:
    [BZOJ3997][TJOI2015]组合数学(Dilworth定理+DP)
    [BZOJ4000][TJOI2015]棋盘(状压DP+矩阵快速幂)
    BZOJ2462[Beijing2011]矩阵模板(二维Hash)
    [BZOJ2458][BeiJing2011]最小三角形(分治)
    [HDU5354]Bipartite Graph(CDQ分治+并查集)
    [NOIP2017]时间复杂度(模拟)
    [Luogu2540][NOIP2016]斗地主增强版(搜索+DP)
    [Luogu1979][NOIP2013]华容道(BFS+SPFA)
    WQS二分题集
    [CC-XXOR]Chef and Easy Problem
  • 原文地址:https://www.cnblogs.com/gisbeginner/p/2767562.html
Copyright © 2011-2022 走看看