class Transport{
private:
int weight; // Member variable (Private)
int capacity; // Member variable (Private)
int speed; // Member variable (Private)
public:
Transport(int aWeight, int aCapacity, int aSpeed) { // Default constructor
if(aWeight > 0) { // Perform validation at the time of creating object
weight = aWeight;
} else {
weight = 0;
}
if(aCapacity > 0) { // Perform validation at the time of creating object
capacity = aCapacity;
} else {
capacity = 0;
}
if(aSpeed > 0) { // Perform validation at the time of creating object
speed = aSpeed;
} else {
speed = 0;
}
}
void carryGoods(); // Member function (Public) -> Each transport has carrying goods functionality.
};
class LandTransport : public Transport{ // Inherit transport class
private:
char * transportationMode; // Member variable (Private)
char * vehicleType; // Member variable (Private)
public:
LandTransport(char * aTransporationMode, char * aVehicleType) {
transportationMode = new char[strlen(aTransporationMode)+1];
strcpy(transportationMode, aTransporationMode);
vehicleType = new char[strlen(aVehicleType)+1];
strcpy(vehicleType, aVehicleType);
}
};
你能描述一下,这里有什么问题,最佳做法是什么?
答案 0 :(得分:1)
您的派生类有一个构造函数,它不提供其父构造函数的参数。
LandTransport(char * aTransporationMode, char * aVehicleType)
应如下所示(例如):
LandTransport(char * aTransporationMode, char * aVehicleType) : Transport(0,0,0)
^^^^^^^^^^^^^^^^^^