Class 如何定义复制构造函数和解除分配指针

Class 如何定义复制构造函数和解除分配指针,class,pointers,constructor,destructor,allocation,Class,Pointers,Constructor,Destructor,Allocation,我运行了cppcheck,结果发现我需要为这个类创建一个副本构造函数。在这种情况下,我不知道如何定义复制构造函数。有什么建议吗 class Simulator{ private: int xMax;// = 40; //SIZE; int yMax;// = 40; //xMax; // 40 //int TTMxSize = 4000; //const int CarMxSize = 500; //c

我运行了cppcheck,结果发现我需要为这个类创建一个副本构造函数。在这种情况下,我不知道如何定义复制构造函数。有什么建议吗

class Simulator{


    private:

        int xMax;// = 40; //SIZE;
        int yMax;// = 40; //xMax; // 40
        //int TTMxSize = 4000;
        //const int CarMxSize = 500;
        //const int WaitListSize = 4000;
        double base_price;// = 0.85 / 4;
        double saev_vott;// = 0.35;
        char* mode_output;// = "modeChoiceStats_supply_charge.csv";    

        vector<Car>** CarMx;//[xMax][yMax];
        vector <Station>** ChStMx;//[xMax][yMax];
        vector<int> **cellChargeCount;
            vector<int> **cellChargeTime;
        int timeTripCounts [288];           

        // Functions for program

    public:
        Simulator();
        Simulator(int fleet_size, int seed, char* inputFile);
        ~Simulator();
        bool loadParameters(char* input);
        void printParameters();
        void placeInitCars();
    bool lookForCar (int x, int y, int r, int dist, int& cn);
    void assignCar (int x, int y, int c, Trip* trp);
void setBusinessTripProbability();

        void runSimulation();
};

Simulator::~Simulator()
{
    for (int x=0; x<xMax; x++)
    {
        delete [] CarMx[x];
        delete [] ChStMx[x];
        delete [] cellChargeCount[x];
        delete [] cellChargeTime[x];
    }

    for (int x=0; x<numZonesL; x++)
        delete [] zoneSharesL[x];

    for (int x=0; x<numZonesS; x++)
        delete [] zoneSharesS[x];

    delete [] CarMx;
    delete [] ChStMx;
    delete [] cellChargeCount;
    delete [] cellChargeTime;
    delete [] zoneSharesL;
    delete [] zoneSharesS;
}

我是一个Cppcheck开发者

要创建副本构造函数,请执行以下操作:

 Simulator(const Simulator &sim);
如果不打算使用复制构造函数,最好将其删除:

Simulator(const Simulator &) = delete;
资源泄漏:您需要使用fclose(inputfile)

可能的泄漏:想象一下以下代码:

Simulator simulator;
simulator.setBusinessTripPossibility();
simulator.setBusinessTripPossibility();
这里有内存泄漏。businessTripProbability分配了两次,并且没有解除分配。您可能有一条规则,即永远不会调用公共方法setBusinessTripProbability()两次。但我的拙见是,你不应该用这样的规则来设计类。尝试允许任意使用公共类接口

Simulator(const Simulator &) = delete;
Simulator simulator;
simulator.setBusinessTripPossibility();
simulator.setBusinessTripPossibility();