Class 如何定义复制构造函数和解除分配指针
我运行了cppcheck,结果发现我需要为这个类创建一个副本构造函数。在这种情况下,我不知道如何定义复制构造函数。有什么建议吗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
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();