class car
{
string carID
string carName
};
class electric : public car
{
string battery
string model
};
基类是car
. electric
是继承自 的派生类car
。当用户输入带有所有属性数据的新车时,构造函数中需要包含什么来初始化它们然后设置值?
class car
{
string carID
string carName
};
class electric : public car
{
string battery
string model
};
基类是car
. electric
是继承自 的派生类car
。当用户输入带有所有属性数据的新车时,构造函数中需要包含什么来初始化它们然后设置值?
您需要定义构造函数并随后正确使用它们。在派生类的初始化期间,您应该始终调用基类的适当构造函数:
Derived::Derived(...):Base(...),<optional initizaliation of Derived members>{...}
例如:
class car
{
string carID;
string carName;
public:
car(string carid, string carname):carID(carid),carName(carname){}
};
class electric : public car
{
string battery;
string model;
public:
electric(string carid, string carname, string battery, string model)
:car(carid,carname),battery(battery),model(model){}
};
在您当前的模型中,您实际上无法访问 car 的任何字段,因为默认情况下在 C++ 中使用class
关键字时,所有字段都是private
. 它们需要是protected
或public
为了让子类访问它们。
您应该通过在派生类的构造函数初始化列表中调用基类构造函数来初始化基类成员。
class car
{
string carID
string carName
public:
car (string id, string name): carID(id), carName(name) {}
};
class electric : public car
{
string battery
string model
public:
electric (string id, string name, string b, string m): car(id, name),
battery(b), model(m){}
};